Repository navigation
Bump nixpkgs from cf5e765 to cd4ea8d - #2
Open
dependabot[bot] wants to merge 114 commits into
Open
dependabot[bot] wants to merge 114 commits into
dependabot[bot] wants to merge 114 commits into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: bc1cindy <bc1cindy@proton.me> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The notebook package re-executes the notebook. Execution is deterministic and records no timing metadata, so re-rendering the notebook amounts to copying the build output over it, and a notebook that is already up to date comes back byte-identical. Only editing or executing the notebook needs the scientific python stack, so it stays out of the default shell and the site build. The notebook devshell has the same dependencies as the derivation, plus jupyterlab, whose checkpoint directories are ignored. Every dependency is packaged in nixpkgs, so no uv2nix layer is required. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The saved plots came from Colab, whose environment is not recorded anywhere. Re-executing with the notebook derivation reproduces the same data (the denominations table is unchanged), and the result is a fixed point: building again from the re-rendered notebook leaves it byte-identical. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The last chart counted n^k ordered selections, which overstates the number of size k combinations with replacement from n denominations, (n+k-1 choose k), by orders of magnitude: 30,840,979,456 versus 55,525,372 for k=6. With the correct count the combinations stay below the number of distinct integers in the range for every k. The density axis was scaled by an invisible scatter of the densities, which only lined up with the count axis while the combinations curve set the top of the plot. Derive its limits from the count axis instead. The output is rendered by the notebook derivation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Split the long conditional sentences, say what Hamming weight 1 means for the denominations in use, and state what the notebook measures before the asymptotic claim about the size of the denomination set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The sumsets draw k values from the denominations and 0, so they hold the sums of every combination of size at most k. Count those combinations the same way, (n+k choose k) less the empty combination, which makes the two curves agree at k=1. The counted combinations are not limited by their sum, so title the chart by the denominations they are drawn from and attach the range to the distinct sums and integers instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The quantile levels are i/20, so the median is i == 10. Skipping i == 5 dropped the first quartile and drew dots under the median markers. Name the number of quantile levels and derive the median's index and the legend's percentile step from it, so they cannot disagree again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Say which property permutations of equal values preserve and why permutations within a sub-transaction yield no new mappings, name the fee rates whose variance makes k:1 exchanges asymmetric, and use m for multiplicity so that k only ever means combination size. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Describe why dense instances leave sub-transaction mappings underdetermined without suggesting a brute force enumeration: density survives setting any one sub-transaction aside, so it holds for the rest of the transaction too. Open the Radix CoinJoin section by drawing that conclusion explicitly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The book is assembled from docs/ by contrib/book.py, which only took markdown pages as chapters. Take Jupyter notebooks too. A notebook's frontmatter is a raw cell that opens it, holding what a markdown page's frontmatter would. It is checked, and dropped from the notebook the book is given, as a markdown page's is. Jupyter's autosaves under .ipynb_checkpoints/ are neither chapters nor copied. List the radix CoinJoin notebook in the index, under a new Drafts part, in place of the SUMMARY.md entry it had before the book was assembled from docs/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mdbook rewrites links to `.md` chapters into links to their `.html` pages, and into in-page anchors on the print page, but leaves links to `.ipynb` chapters as they are, so they lead to the raw notebook, which isn't part of the built site. After rendering the notebooks, the preprocessor points every relative link that resolves to a notebook chapter at the chapter's `.md` path, so mdbook rewrites it like any other chapter link. Links to other `.ipynb` files, and absolute ones, are left alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mdbook lists separators as the bare string "Separator" and part titles
as {"PartTitle": ...}, and the jupyter preprocessor called .get on every
item, so a book with a separator stopped the build. It now only
descends into chapters.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mdbook loads additional-js on print.html as well, so the printed book kept only the first page of each table and showed dead page buttons. Showing every row widens the table past the page, because the later rows hold the longest values, so print also tightens font and padding.
The global text colour is a mid grey chosen to read on the page, but these labels sit on the bars, where grey has almost no contrast. They go back to black, as they were before the plot style was added.
With a transparent figure the darkest plasma fills sit directly on the page, and on the dark themes they nearly vanish into it. A grey outline per series keeps each silhouette visible on either theme.
The plot style turns legend frames off and makes their labels grey. Over the dust band of this plot that left the labels unreadable on dark pages, so this legend gets back its white frame and black labels.
…decision tree Summarizes each concrete term of the cost function: randomization, Sybil resistance, subset sum ambiguity, disjoint flows, consolidation, sibling avoidance and UTXO pool diversity. Each term is specified in its own chapter. Then gives a procedure for constructing the decision tree the cost function evaluates. --- - [x] Define bottom-up tree and action vocabulary - [x] Seed the partition-refinement lattice - [x] Allocate disjoint coin selections - [x] Expand Radix CoinJoin or net-settlement choices - [x] Bracket and back up values, and order commitments - [x] Align the decision tree with the cost function chapter - [x] Define the user-agent decision loop - [x] Summarize the concrete terms - [ ] Link the term chapters once they are on main - [ ] Represent UTXO pool diversity Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the notebook's own parameters the k=6 sumset still has gaps larger than the dust threshold, including below max_denom, so describe how coverage varies across the range instead. Suggested-by: bc1cindy <bc1cindy@proton.me> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
powers() dropped every power below min_denom before multiples() scaled them, so the multiples of those powers that do reach min_denom were missing: 2 × 3^5 = 486 and 5 × 10^2 = 500. multiples() already keeps only the values in the denomination range, so powers() now starts at the zeroth power. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The quantiles of the k=6 sumset start with several that are entirely gaps of size 1, but the plot omits gaps of size 1 (min_diff = 2), so its quantiles plateau at 2 and then at 3. The text described the sumset as if it were the plot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…chapter Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A sum above c times max_denom does not need c copies of the largest denomination: 100000000 + 86093442 + 20000000 exceeds the cutoff at c = 2 with one. Since no term exceeds max_denom, it needs more than c terms, which is what leaves it fewer free terms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Naive reconciliation of BEC is the base: a peer that obtains a block requests the preimages of the hashes it refers to. Peers wait for their neighbors' Merkle sets to quiesce before authoring a block. Sparse Merkle sets, mutual and asymmetric knowledge, range reconciliation and rateless streams are described as future optimizations. Links to the contacts, transaction construction and optimistic track chapters resolve once those follow in this series. Co-authored-by: GPT-6 Astra <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep Fungi protocol consumers at the communication capability boundary. Describe application-level contact, device and transport identity management: introductions, TOFU provenance, local trust, authenticated endpoint updates, device enrollment and rotation, and revocation that affects cached routes and already-issued capabilities. Draft a shared contact exchange protocol for application interoperability, long-lived authenticated contact channels, manual session initiation, and payment negotiation across the session lifecycle. Wire encoding and concrete identity and transport profiles stay open. Links to the optimistic track and transaction construction chapters resolve once those follow in this series. Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A parent chapter for transaction construction in the abstract: content versus state synchronization, the phases, and what each track and the validity proofs are for. It also holds the block DAG groundwork both tracks share: block structure, nonce commitments and equivocation evidence, genesis, the threshold t, causal order and frontiers. The optimistic track, recovery track and validity proofs follow as its sub-chapters; links to them resolve once they do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Phases close by unanimous acknowledgement, with no deadlines: each phase closes with an echo and a closing acknowledgement, the input set is stable before outputs, and the outputs phase closes on balance. The chapter goes through the phases one by one, including the censorship exception for a validator's own anonymous contributions. It also covers sharded state and synchronization scope, the dissemination interface, optional attested validation and acknowledgement relay, and block publication after quiescence. Links to the recovery track and validity proofs resolve once those follow in this series. Co-authored-by: GPT-6 Astra <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A stalled phase of the optimistic track turns into a recovery coalition formation proposal. Deadlines exist only on this track. Recovery track blocks have a reduced threshold t < n and commit unambiguously to what they are missing; a block that contradicts itself is invalid and its author treated as unresponsive, but an equivocating one still exposes the author's key. Counterparty stalls are specified as option A (blame the payer only), with option B (blame the pair) described and left open. Also covers the dishonest majority case, privacy, cost and a worked example. Links to the validity proofs and protocol messages resolve once those follow in this series. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Record the best candidate found so far for proving that outputs are covered by inputs: input slots committed with their destinations, anonymous registration rate-limited by a tag per slot, and output proofs against the registered leaves, in jellyfish TurboPlonk on BN254 with a universal setup. The figures come from the jf-register proof of concept. Evaluation continues; the code will be rewritten for Fungi and this document finalized when validity proofs are needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two additions to the overview: a paragraph pointing at the channel interfaces, and one relating per-peer trust assumptions to asymmetric distributed trust and Flexible BFT. Kept apart from the overview itself (PR 51) so it can be reviewed on its own. Co-authored-by: GPT-6.1 Sol <noreply@openai.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
List the messages peers exchange: peer introduction, gossip, sets, public gossip, negotiation, session initialization, transaction construction, interactive payments and blocks. For each, say who sends it, to whom, in which setting, what it carries and what its channel must provide. The content comes from the peer messages draft (onwloqro) and the concurrent PSBT and coalition formation drafts. The draft's transport survey is left out: specs state channel properties, and choosing a transport belongs to another layer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A terse outline of a concrete cost function term. It counts the disjoint counterfactual routes of a coin's full amount from a source to a sink, with one max flow per source, on the transaction graph alone. Every coin edge and flow edge except the source's and the sinks' is capped at the amount, and the flow divided by the amount is the number of routes, which may be split over smaller coins. The main use is the label iota used by the consolidation term: a coin with enough routes from its own origins is impervious to intersections. For coins spent together, a routes matrix gives the routes from each origin of any of them to each of them. Intersection attacks compare its rows. It also covers pruning the transaction graph, which gives lower bounds, and an approximation. Sampled blocks give degree distributions that, with randomized coin selection, model the transaction graph as a random acyclic network. A conservative estimate uses an upper bound on the number of candidates, since more candidates give fewer routes. Each layer of the network (topology, amounts, links, knowledge) is estimated separately. k is then estimated analytically from block boundary cuts, or by Monte Carlo. Local upper bounds and lower bounds from sampled walks are kept alongside. To be expanded into a full chapter later. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g output penalty Terse outlines of three draft chapters, to be expanded later. Others' inputs subset sum density is the general discussion: effective values fixed at the coalition formation feerate, the saddle point estimate and distinct sum enumeration, density challenges in co-spend proposals and how perturbation optimizes them (fungi-protocol/docs#75), and the aggregator's search over combinations of co-spend proposals, with a greedy prover for disjoint subsets. Own inputs or outputs subset sum ambiguity is the concrete term. It scores how well the complete sumset of a proposed output decomposition is covered from above by subset sums of the other users' inputs, using a bitmap or capped counts with satisficing per output combination and a size correction. It also scores how the sumset of the user's own inputs overlaps with that of the other users' inputs during coalition formation, and the same for outputs in hindsight. It is evaluated on lower bounds in the decision tree and on complete sets after confirmation, and its liability only falls as inputs and outputs are learned. The sibling output penalty heavily penalizes spending outputs of the same transaction together, without bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Spending several own coins together links them, and loss from intersection attacks compounds with each one. The term grows exponentially with the number of linked coins, scaled by 1 - pq. Here q comes from the labels of the counterfactual routes term, and p from the density of the input side of the subset sum ambiguity term. Both are required for any attenuation, and the term only vanishes when both meet their thresholds. Density alone isn't enough, since comparing the ancestor sets of pairs of inputs narrows down an intersection efficiently. It is unbounded, in the decision tree and after confirmation, so it can exceed the budget: spending a whole wallet at once would normally let all of its origin funds be traced, but under the right conditions even that can be safe. Imagining such a transaction right after also evaluates a wallet state, including the objective costs of spending all of its coins. To be expanded into a full chapter later. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tactics keeps the preliminaries: the wallet state it starts from, the tree it produces, and re-evaluation. The bottom-up construction, with its specific approaches to partitioning, coin selection and change construction, becomes a chapter of its own. The index lists it flat after Tactics, because this branch predates sub-chapter support. It nests under Tactics where that support is merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The draft is published from its own repository, fungi-protocol/docs-draft, so that nothing has to be merged into main for it to go live. Its Pages site is served from /docs-draft/, not /docs/. Point the 404 page's base and the link check at that path. The Pages workflow is unchanged: it deploys on a push to that repository's main, which is this commit. This commit belongs on draft only. It never goes to main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bumps [nixpkgs](https://github.com/NixOS/nixpkgs) from `cf5e765` to `cd4ea8d`. - [Commits](NixOS/nixpkgs@cf5e765...cd4ea8d) --- updated-dependencies: - dependency-name: nixpkgs dependency-version: cd4ea8d57de16f4810bc5f14207bac45fbf19f67 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
yuval-block
force-pushed
the
main
branch
10 times, most recently
from
October 26, 2026 05:05
1ee57d1 to
8e41ba2
Compare
Contributor
Author
|
A newer version of nixpkgs exists, but since this PR has been edited by someone other than Dependabot I haven't updated it. You'll get a PR for the updated version as normal once this PR is merged. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps nixpkgs from
cf5e765tocd4ea8d.Commits
cd4ea8d[Backport release-26.05] muffet: 2.11.5 -> 2.11.6 (#575894)7816d39[Backport release-26.05] nixos/security/pki: distrust emSign ECC root CA - G3...a6401f2nixos/security/pki: distrust various roots with compromised intermediates96a3341[Backport release-26.05] hugo: 0.167.0 -> 0.168.0 (#576383)e7a3d19hugo: 0.167.0 -> 0.168.05f30be5[Backport release-26.05] ddcci-driver: Fix build for kernel 7.2 (#559915)f0cc8da[Backport release-26.05] knot-resolver_6: 6.4.2 -> 6.5.0 (#571196)a48483f[Backport release-26.05] technitium-dns-server: 15.6.0 -> 15.6.2 (#576292)547c3bf[Backport release-26.05] _3proxy: switch to cmake (#576097)280c636technitium-dns-server: 15.6.0 -> 15.6.2Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)