chaintool-doc

Chaintool documentation
Log | Files | Refs | README | LICENSE

commit d39d09fe9cb89d34abde024b5ae490dd67fe7096
parent 46c473cd6ee2808be82d744f4b01fb0a9a247c16
Author: lash <dev@holbrook.no>
Date:   Sun, 13 Nov 2022 08:13:43 +0000

Add code component descriptions

Diffstat:
MMakefile | 13++++++++++---
MREADME.md | 76+++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Abuild/deps.svg | 270+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdeps.dot | 7+++++++
4 files changed, 338 insertions(+), 28 deletions(-)

diff --git a/Makefile b/Makefile @@ -1,17 +1,24 @@ SOURCES = $(realpath sources.txt) -all: html txt +doc: doc-html doc-txt -html: prep +doc-html: doc-prep makeinfo --html --no-split start.texi -o build/out/index.html -txt: prep +doc-txt: doc-prep makeinfo --plaintext start.texi -o build/out +doc-prep: prep + prep: mkdir -p build/out #perl setup.pl $(SOURCES) build +readme: prep diagram + +diagram: + dot -Tsvg deps.dot > build/deps.svg + .PHONY: clean clean: diff --git a/README.md b/README.md @@ -1,31 +1,66 @@ # Chaintool documentation +Chaintool is still very much a work-in-progress, and so too is its documentation. + +This README, while still somewhat chaotic, aims to fill the void of a missing structured presentation, and make the introduction to chaintool a bit more friendly. + ## Showcasing chaintool The most intuitive entry point to chaintool is most likely the `eth-monitor` tool. It can be installed directly from `pypi` using `pip install eth-monitor`. +## Code components + +Upstream souce of chaintool code is located at [git.defalsify.org](https://git.defalsify.org) + + +### Core layer + +All libraries that are considered part of the `chaintool` suite: + +* **funga**, **funga-eth** - message signing tools and daemon for development, with implementation for EVM. +* **chainlib**, **chainlib-eth** - blockchain RPC interface with tooling and implementation for EVM nodes. +* **chainsyncer** - blockchain RPC transaction sync driver. +* **chainqueue** - blockchain RPC transaction queue control. +* **eth-cache** - transparent proxy that stores local copies of RPC results. + + +### Higher layer + +Tools and daemons building on the core layer. + +* **eth-monitor** - Visualization and arbitrary code execution for mined transactions +* **chaind**, **chaind-eth** - Full-duplex transaction queueing tool for ethereum + + +### Lower layer + +Libraries that were developed within the context of `chaintool`, but have a more generic scope. + +* **shep** - Multi-state key/value stores using bit masks. +* **confini** - Parse and merge multiple ini files. +* **aiee** - Common command line interfacing utils. +* **leveldir** - Multi-level directory structure data stores. +* **hexathon** - Common and uncommon hex string operations. +* **potaahto** - Essentially: Convert between snake and camel case. + +The upstream code of these lower layer modules can be found at [holbrook.no/src](https://holbrook.no/src) + + ## Documentation for chaintool -Chaintool is still very much a work-in-progress, and so too is its documentation. So far, documentation efforts have been made in four areas, in order of most recently updated first: -### Code dependency diagram - -The dependency graph is only available in as an unformatted **graphviz** document located at `$REPO_ROOT/deps.dot`. +### Code components diagram Last time the author remembered to render it, it looked like this: -![](https://g33k.holbrook.no/b362bcba6683179736d9c5c40b6c377066f6af40c26c6efcb1a87aecb00333fd) - -It is defined in terms of three layers: +![](./build/deps.svg) -* The lower layer (grey) consists of libraries that were developed within the context of `chaintool`, but have a higher generic scope. -* The *core* layer contains all libraries that are considered part of the `chaintool` suite. -* The higher layer (green) conprise of tools and daemons building on the `chaintool` suite libraries. +The dependency graph is only available in as an unformatted **graphviz** document located at `$REPO_ROOT/deps.dot`. `make diagram` renders this SVG version. ### Man pages @@ -34,16 +69,16 @@ The `chainlib` module provides the script `chainlib-man.py` which provides an in An immediate example can be found in the `chainlib-eth` repository, where the directory `$REPO_ROOT/man` demonstrates how to add hooks for overriding both section contents and argument options for individual tools. -Invoking `make man` in the `chainlib-eth` and `eth-monitor` repositories will trigger a build of man pages for all the CLI tools provided. - What override behavior is currently available should be straightforward to glean from reading the `$CHAINLIB_REPO_ROOT/scripts/chainlib-man.py` script. +Invoking `make man` in the `chainlib-eth` and `eth-monitor` repositories will trigger a build of man pages for all the CLI tools provided. + ### Descriptive documentation Some initial work for high-level documentation exists in the chainlib repository, specifically in `$REPO_ROOT/doc/texinfo`. -The documentation can be generated by running `make` in the `$REPO_ROOT` of **this** repository. The HTML version of the documentation will be output as a single file to `$REPO_ROOT/build/out/index.html` +The documentation can be generated by running `make doc` in the `$REPO_ROOT` of **this** repository. The HTML version of the documentation will be output as a single file to `$REPO_ROOT/build/out/index.html` ### Docstrings @@ -55,16 +90,7 @@ Not much to add here. Ye generic sphinx-doc invocation should do the trick. To compensate somewhat for the lack of exhaustive documentation, actual implementations using the library may help light the way somewhat. -The known implementations that have some minimum level of maturity are listed below. - - -### High-level libraries - -* **eth-erc20** - an implementation of the ERC20 token, which also includes an example token contract that lets authorized addresses arbitrarily mint tokens at any time. -* **eth-erc721** - an implementation of the ERC721 "NFT" token, which also includes an example token contract that creates achievment badges for developed contributions. - - -### High-level tools +Aside from the "higher level" components listed above, two known EVM-based implementations that have some minimum level of maturity are: -* **eth-monitor** - which provides visualization and arbitrary code execution for mined transactions -* **chaind-eth** - a full-duplex transaction queueing tool for ethereum +* [eth-erc20](https://git.defalsify.org/eth-erc20) - an implementation of the ERC20 token, which also includes an example token contract that lets authorized addresses arbitrarily mint tokens at any time. +* [eth-erc721](https://git.defalsify.org/eth-erc721) - an implementation of the ERC721 "NFT" token, which also includes an example token contract that creates achievment badges for developed contributions. diff --git a/build/deps.svg b/build/deps.svg @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 7.0.1 (0) + --> +<!-- Pages: 1 --> +<svg width="635pt" height="548pt" + viewBox="0.00 0.00 634.67 548.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 544)"> +<polygon fill="white" stroke="none" points="-4,4 -4,-544 630.67,-544 630.67,4 -4,4"/> +<!-- confini --> +<g id="node1" class="node"> +<title>confini</title> +<ellipse fill="#cccccc" stroke="black" cx="131.45" cy="-450" rx="44.69" ry="18"/> +<text text-anchor="middle" x="131.45" y="-446.3" font-family="Times,serif" font-size="14.00">lo/confini</text> +</g> +<!-- chainlib --> +<g id="node7" class="node"> +<title>chainlib</title> +<ellipse fill="none" stroke="black" cx="204.45" cy="-378" rx="38.99" ry="18"/> +<text text-anchor="middle" x="204.45" y="-374.3" font-family="Times,serif" font-size="14.00">chainlib</text> +</g> +<!-- confini&#45;&gt;chainlib --> +<g id="edge2" class="edge"> +<title>confini&#45;&gt;chainlib</title> +<path fill="none" stroke="black" d="M148.01,-433.12C157.51,-424.01 169.59,-412.42 180.15,-402.3"/> +<polygon fill="black" stroke="black" points="182.31,-405.08 187.11,-395.63 177.47,-400.02 182.31,-405.08"/> +</g> +<!-- hexathon --> +<g id="node2" class="node"> +<title>hexathon</title> +<ellipse fill="#cccccc" stroke="black" cx="381.45" cy="-522" rx="51.99" ry="18"/> +<text text-anchor="middle" x="381.45" y="-518.3" font-family="Times,serif" font-size="14.00">lo/hexathon</text> +</g> +<!-- leveldir --> +<g id="node4" class="node"> +<title>leveldir</title> +<ellipse fill="#cccccc" stroke="black" cx="279.45" cy="-306" rx="46.59" ry="18"/> +<text text-anchor="middle" x="279.45" y="-302.3" font-family="Times,serif" font-size="14.00">lo/leveldir</text> +</g> +<!-- hexathon&#45;&gt;leveldir --> +<g id="edge8" class="edge"> +<title>hexathon&#45;&gt;leveldir</title> +<path fill="none" stroke="black" d="M397.5,-504.84C406.18,-495.03 416.18,-481.78 421.45,-468 438.6,-423.09 455.12,-399.31 427.45,-360 424.3,-355.53 367.23,-335.93 324.9,-321.87"/> +<polygon fill="black" stroke="black" points="326.25,-318.63 315.66,-318.81 324.05,-325.28 326.25,-318.63"/> +</g> +<!-- hexathon&#45;&gt;chainlib --> +<g id="edge3" class="edge"> +<title>hexathon&#45;&gt;chainlib</title> +<path fill="none" stroke="black" d="M331.26,-517.01C296.11,-511.51 250.71,-498.54 223.45,-468 208.88,-451.68 204.51,-426.98 203.57,-407.73"/> +<polygon fill="black" stroke="black" points="207.07,-407.75 203.4,-397.81 200.07,-407.87 207.07,-407.75"/> +</g> +<!-- funga --> +<g id="node9" class="node"> +<title>funga</title> +<ellipse fill="none" stroke="black" cx="381.45" cy="-450" rx="30.59" ry="18"/> +<text text-anchor="middle" x="381.45" y="-446.3" font-family="Times,serif" font-size="14.00">funga</text> +</g> +<!-- hexathon&#45;&gt;funga --> +<g id="edge6" class="edge"> +<title>hexathon&#45;&gt;funga</title> +<path fill="none" stroke="black" d="M381.45,-503.7C381.45,-496.41 381.45,-487.73 381.45,-479.54"/> +<polygon fill="black" stroke="black" points="384.95,-479.62 381.45,-469.62 377.95,-479.62 384.95,-479.62"/> +</g> +<!-- potaahto --> +<g id="node3" class="node"> +<title>potaahto</title> +<ellipse fill="#cccccc" stroke="black" cx="282.45" cy="-450" rx="50.09" ry="18"/> +<text text-anchor="middle" x="282.45" y="-446.3" font-family="Times,serif" font-size="14.00">lo/potaahto</text> +</g> +<!-- potaahto&#45;&gt;chainlib --> +<g id="edge4" class="edge"> +<title>potaahto&#45;&gt;chainlib</title> +<path fill="none" stroke="black" d="M264.36,-432.76C254.2,-423.65 241.36,-412.13 230.17,-402.09"/> +<polygon fill="black" stroke="black" points="232.54,-399.51 222.76,-395.44 227.87,-404.72 232.54,-399.51"/> +</g> +<!-- eth_cache --> +<g id="node11" class="node"> +<title>eth_cache</title> +<ellipse fill="none" stroke="black" cx="276.45" cy="-234" rx="44.39" ry="18"/> +<text text-anchor="middle" x="276.45" y="-230.3" font-family="Times,serif" font-size="14.00">eth&#45;cache</text> +</g> +<!-- leveldir&#45;&gt;eth_cache --> +<g id="edge9" class="edge"> +<title>leveldir&#45;&gt;eth_cache</title> +<path fill="none" stroke="black" d="M278.71,-287.7C278.39,-280.41 278.02,-271.73 277.67,-263.54"/> +<polygon fill="black" stroke="black" points="281.17,-263.46 277.24,-253.62 274.18,-263.76 281.17,-263.46"/> +</g> +<!-- shep --> +<g id="node5" class="node"> +<title>shep</title> +<ellipse fill="#cccccc" stroke="black" cx="140.45" cy="-234" rx="36.29" ry="18"/> +<text text-anchor="middle" x="140.45" y="-230.3" font-family="Times,serif" font-size="14.00">lo/shep</text> +</g> +<!-- chainsyncer --> +<g id="node12" class="node"> +<title>chainsyncer</title> +<ellipse fill="none" stroke="black" cx="268.45" cy="-162" rx="52.79" ry="18"/> +<text text-anchor="middle" x="268.45" y="-158.3" font-family="Times,serif" font-size="14.00">chainsyncer</text> +</g> +<!-- shep&#45;&gt;chainsyncer --> +<g id="edge14" class="edge"> +<title>shep&#45;&gt;chainsyncer</title> +<path fill="none" stroke="black" d="M164.22,-220C183.07,-209.69 209.75,-195.1 231.39,-183.26"/> +<polygon fill="black" stroke="black" points="232.83,-186.47 239.92,-178.6 229.47,-180.33 232.83,-186.47"/> +</g> +<!-- chainqueue --> +<g id="node13" class="node"> +<title>chainqueue</title> +<ellipse fill="none" stroke="black" cx="140.45" cy="-162" rx="50.89" ry="18"/> +<text text-anchor="middle" x="140.45" y="-158.3" font-family="Times,serif" font-size="14.00">chainqueue</text> +</g> +<!-- shep&#45;&gt;chainqueue --> +<g id="edge15" class="edge"> +<title>shep&#45;&gt;chainqueue</title> +<path fill="none" stroke="black" d="M140.45,-215.7C140.45,-208.41 140.45,-199.73 140.45,-191.54"/> +<polygon fill="black" stroke="black" points="143.95,-191.62 140.45,-181.62 136.95,-191.62 143.95,-191.62"/> +</g> +<!-- aiee --> +<g id="node6" class="node"> +<title>aiee</title> +<ellipse fill="#cccccc" stroke="black" cx="34.45" cy="-450" rx="34.39" ry="18"/> +<text text-anchor="middle" x="34.45" y="-446.3" font-family="Times,serif" font-size="14.00">lo/alee</text> +</g> +<!-- aiee&#45;&gt;chainlib --> +<g id="edge1" class="edge"> +<title>aiee&#45;&gt;chainlib</title> +<path fill="none" stroke="black" d="M61.01,-438.06C89.12,-426.49 133.74,-408.11 165.76,-394.93"/> +<polygon fill="black" stroke="black" points="166.77,-398.3 174.69,-391.25 164.11,-391.82 166.77,-398.3"/> +</g> +<!-- chainlib_eth --> +<g id="node8" class="node"> +<title>chainlib_eth</title> +<ellipse fill="none" stroke="black" cx="396.45" cy="-306" rx="52.79" ry="18"/> +<text text-anchor="middle" x="396.45" y="-302.3" font-family="Times,serif" font-size="14.00">chainlib&#45;eth</text> +</g> +<!-- chainlib&#45;&gt;chainlib_eth --> +<g id="edge5" class="edge"> +<title>chainlib&#45;&gt;chainlib_eth</title> +<path fill="none" stroke="black" d="M234.45,-366.06C265.61,-354.7 314.75,-336.79 350.74,-323.66"/> +<polygon fill="black" stroke="black" points="351.84,-326.99 360.03,-320.28 349.44,-320.41 351.84,-326.99"/> +</g> +<!-- chainlib&#45;&gt;chainsyncer --> +<g id="edge10" class="edge"> +<title>chainlib&#45;&gt;chainsyncer</title> +<path fill="none" stroke="black" d="M203.31,-359.71C201.97,-329.28 202.21,-264.77 223.45,-216 227.91,-205.76 235.02,-196 242.29,-187.71"/> +<polygon fill="black" stroke="black" points="244.81,-190.13 249.08,-180.44 239.7,-185.35 244.81,-190.13"/> +</g> +<!-- chainlib&#45;&gt;chainqueue --> +<g id="edge11" class="edge"> +<title>chainlib&#45;&gt;chainqueue</title> +<path fill="none" stroke="black" d="M184.82,-362.27C158.59,-341.21 113.33,-299.72 95.45,-252 89.83,-237.02 89.93,-231.02 95.45,-216 99.3,-205.52 106.24,-195.69 113.54,-187.41"/> +<polygon fill="black" stroke="black" points="116.07,-189.83 120.43,-180.17 111,-185 116.07,-189.83"/> +</g> +<!-- chainlib_eth&#45;&gt;eth_cache --> +<g id="edge12" class="edge"> +<title>chainlib_eth&#45;&gt;eth_cache</title> +<path fill="none" stroke="black" d="M370.7,-289.98C353.19,-279.77 329.82,-266.14 310.74,-255"/> +<polygon fill="black" stroke="black" points="312.63,-252.05 302.23,-250.04 309.1,-258.1 312.63,-252.05"/> +</g> +<!-- chaind_eth --> +<g id="node15" class="node"> +<title>chaind_eth</title> +<ellipse fill="#aaffaa" stroke="black" cx="459.45" cy="-18" rx="57.39" ry="18"/> +<text text-anchor="middle" x="459.45" y="-14.3" font-family="Times,serif" font-size="14.00">hi/chaind&#45;eth</text> +</g> +<!-- chainlib_eth&#45;&gt;chaind_eth --> +<g id="edge25" class="edge"> +<title>chainlib_eth&#45;&gt;chaind_eth</title> +<path fill="none" stroke="black" d="M445.96,-299.48C501.66,-292.13 586.92,-277.07 606.45,-252 658.81,-184.78 597.81,-135.01 540.45,-72 528.77,-59.18 513.35,-48.08 499.1,-39.4"/> +<polygon fill="black" stroke="black" points="501.19,-36.57 490.78,-34.55 497.66,-42.61 501.19,-36.57"/> +</g> +<!-- eth_monitor --> +<g id="node16" class="node"> +<title>eth_monitor</title> +<ellipse fill="#aaffaa" stroke="black" cx="469.45" cy="-90" rx="61.99" ry="18"/> +<text text-anchor="middle" x="469.45" y="-86.3" font-family="Times,serif" font-size="14.00">hi/eth&#45;monitor</text> +</g> +<!-- chainlib_eth&#45;&gt;eth_monitor --> +<g id="edge24" class="edge"> +<title>chainlib_eth&#45;&gt;eth_monitor</title> +<path fill="none" stroke="black" d="M444.72,-298.31C495.43,-290.18 570.21,-274.67 587.45,-252 624.85,-202.81 552.89,-144.03 505.78,-112.89"/> +<polygon fill="black" stroke="black" points="507.73,-109.98 497.43,-107.5 503.93,-115.86 507.73,-109.98"/> +</g> +<!-- eth_erc20 --> +<g id="node17" class="node"> +<title>eth_erc20</title> +<ellipse fill="#aaffaa" stroke="black" cx="525.45" cy="-234" rx="53.09" ry="18"/> +<text text-anchor="middle" x="525.45" y="-230.3" font-family="Times,serif" font-size="14.00">hi/eth&#45;erc20</text> +</g> +<!-- chainlib_eth&#45;&gt;eth_erc20 --> +<g id="edge20" class="edge"> +<title>chainlib_eth&#45;&gt;eth_erc20</title> +<path fill="none" stroke="black" d="M423.8,-290.15C442.53,-279.99 467.6,-266.39 488.15,-255.24"/> +<polygon fill="black" stroke="black" points="489.68,-258.39 496.8,-250.55 486.34,-252.24 489.68,-258.39"/> +</g> +<!-- eth_erc721 --> +<g id="node18" class="node"> +<title>eth_erc721</title> +<ellipse fill="#aaffaa" stroke="black" cx="396.45" cy="-234" rx="57.69" ry="18"/> +<text text-anchor="middle" x="396.45" y="-230.3" font-family="Times,serif" font-size="14.00">hi/eth&#45;erc721</text> +</g> +<!-- chainlib_eth&#45;&gt;eth_erc721 --> +<g id="edge21" class="edge"> +<title>chainlib_eth&#45;&gt;eth_erc721</title> +<path fill="none" stroke="black" d="M396.45,-287.7C396.45,-280.41 396.45,-271.73 396.45,-263.54"/> +<polygon fill="black" stroke="black" points="399.95,-263.62 396.45,-253.62 392.95,-263.62 399.95,-263.62"/> +</g> +<!-- funga&#45;&gt;chainlib --> +<g id="edge22" class="edge"> +<title>funga&#45;&gt;chainlib</title> +<path fill="none" stroke="black" d="M357.39,-438.62C352.15,-436.41 346.62,-434.1 341.45,-432 309.05,-418.85 272.05,-404.58 244.68,-394.17"/> +<polygon fill="black" stroke="black" points="245.96,-390.91 235.37,-390.63 243.48,-397.45 245.96,-390.91"/> +</g> +<!-- funga_eth --> +<g id="node10" class="node"> +<title>funga_eth</title> +<ellipse fill="none" stroke="black" cx="374.45" cy="-378" rx="44.39" ry="18"/> +<text text-anchor="middle" x="374.45" y="-374.3" font-family="Times,serif" font-size="14.00">funga&#45;eth</text> +</g> +<!-- funga&#45;&gt;funga_eth --> +<g id="edge7" class="edge"> +<title>funga&#45;&gt;funga_eth</title> +<path fill="none" stroke="black" d="M379.72,-431.7C378.99,-424.41 378.12,-415.73 377.3,-407.54"/> +<polygon fill="black" stroke="black" points="380.79,-407.21 376.31,-397.61 373.82,-407.91 380.79,-407.21"/> +</g> +<!-- funga_eth&#45;&gt;chainlib_eth --> +<g id="edge23" class="edge"> +<title>funga_eth&#45;&gt;chainlib_eth</title> +<path fill="none" stroke="black" d="M379.89,-359.7C382.23,-352.24 385.03,-343.32 387.66,-334.97"/> +<polygon fill="black" stroke="black" points="390.96,-336.14 390.62,-325.55 384.28,-334.04 390.96,-336.14"/> +</g> +<!-- eth_cache&#45;&gt;chainsyncer --> +<g id="edge13" class="edge"> +<title>eth_cache&#45;&gt;chainsyncer</title> +<path fill="none" stroke="black" d="M274.47,-215.7C273.64,-208.41 272.64,-199.73 271.71,-191.54"/> +<polygon fill="black" stroke="black" points="275.19,-191.15 270.57,-181.61 268.23,-191.94 275.19,-191.15"/> +</g> +<!-- chaind --> +<g id="node14" class="node"> +<title>chaind</title> +<ellipse fill="#aaffaa" stroke="black" cx="268.45" cy="-90" rx="43.59" ry="18"/> +<text text-anchor="middle" x="268.45" y="-86.3" font-family="Times,serif" font-size="14.00">hi/chaind</text> +</g> +<!-- chainsyncer&#45;&gt;chaind --> +<g id="edge16" class="edge"> +<title>chainsyncer&#45;&gt;chaind</title> +<path fill="none" stroke="black" d="M268.45,-143.7C268.45,-136.41 268.45,-127.73 268.45,-119.54"/> +<polygon fill="black" stroke="black" points="271.95,-119.62 268.45,-109.62 264.95,-119.62 271.95,-119.62"/> +</g> +<!-- chainsyncer&#45;&gt;eth_monitor --> +<g id="edge19" class="edge"> +<title>chainsyncer&#45;&gt;eth_monitor</title> +<path fill="none" stroke="black" d="M304.38,-148.49C336.62,-137.26 384.22,-120.68 420.03,-108.21"/> +<polygon fill="black" stroke="black" points="421.02,-111.57 429.31,-104.98 418.71,-104.96 421.02,-111.57"/> +</g> +<!-- chainqueue&#45;&gt;chaind --> +<g id="edge17" class="edge"> +<title>chainqueue&#45;&gt;chaind</title> +<path fill="none" stroke="black" d="M167.28,-146.33C186.34,-135.9 212.14,-121.79 232.92,-110.43"/> +<polygon fill="black" stroke="black" points="234.54,-113.53 241.63,-105.67 231.18,-107.39 234.54,-113.53"/> +</g> +<!-- chaind&#45;&gt;chaind_eth --> +<g id="edge18" class="edge"> +<title>chaind&#45;&gt;chaind_eth</title> +<path fill="none" stroke="black" d="M300.42,-77.28C331.12,-66.03 377.85,-48.9 412.72,-36.12"/> +<polygon fill="black" stroke="black" points="413.53,-39.56 421.71,-32.83 411.12,-32.98 413.53,-39.56"/> +</g> +</g> +</svg> diff --git a/deps.dot b/deps.dot @@ -4,6 +4,7 @@ digraph { potaahto [ label="lo/potaahto", style="filled"; fillcolor="#cccccc" ]; leveldir [ label="lo/leveldir", style="filled"; fillcolor="#cccccc" ]; shep [ label="lo/shep", style="filled"; fillcolor="#cccccc" ]; + aiee [ label="lo/alee", style="filled"; fillcolor="#cccccc" ]; chainlib [ label="chainlib" ]; chainlib_eth [ label="chainlib-eth" ]; @@ -21,6 +22,8 @@ digraph { eth_erc20 [ label="hi/eth-erc20", style="filled", fillcolor="#aaffaa" ]; eth_erc721 [ label="hi/eth-erc721", style="filled", fillcolor="#aaffaa" ]; + aiee -> chainlib + confini -> chainlib hexathon -> chainlib potaahto -> chainlib @@ -31,6 +34,10 @@ digraph { hexathon -> leveldir -> eth_cache + chainlib -> chainsyncer + chainlib -> chainqueue + chainlib_eth -> eth_cache + eth_cache -> chainsyncer shep -> chainsyncer shep -> chainqueue