docs: Update docs for versioned modules.

This updates the overall docs README to include all of the new modules
as well as introduce a module hierarchy diagram.
This commit is contained in:
Dave Collins 2018-08-09 21:21:16 -05:00
parent b232e6564e
commit ae9c2aae56
No known key found for this signature in database
GPG Key ID: B8904D9D9C93D1F2
3 changed files with 395 additions and 30 deletions

View File

@ -18,7 +18,8 @@
5. [Developer Resources](#DeveloperResources)
1. [Code Contribution Guidelines](#ContributionGuidelines)
2. [JSON-RPC Reference](#JSONRPCReference)
3. [The Decred-related Go Packages](#GoPackages)
3. [Go Modules](#GoModules)
4. [Module Hierarchy](#ModuleHierarchy)
<a name="About" />
@ -191,40 +192,74 @@ information.
<a name="ContributionGuidelines" />
**5.1 Code Contribution Guidelines**
* [Code Contribution Guidelines](https://github.com/decred/dcrd/tree/master/docs/code_contribution_guidelines.md)
<a name="JSONRPCReference" />
**5.2 JSON-RPC Reference**
* [JSON-RPC Reference](https://github.com/decred/dcrd/tree/master/docs/json_rpc_api.md)
* [RPC Examples](https://github.com/decred/dcrd/tree/master/docs/json_rpc_api.md#ExampleCode)
<a name="GoPackages" />
* The Decred-related Go Packages:
* [rpcclient](https://github.com/decred/dcrd/tree/master/rpcclient) - Implements a
robust and easy to use Websocket-enabled Decred JSON-RPC client
* [dcrjson](https://github.com/decred/dcrd/tree/master/dcrjson) - Provides an extensive API
for the underlying JSON-RPC command and return values
* [wire](https://github.com/decred/dcrd/tree/master/wire) - Implements the
Decred wire protocol
* [peer](https://github.com/decred/dcrd/tree/master/peer) -
Provides a common base for creating and managing Decred network peers.
* [blockchain](https://github.com/decred/dcrd/tree/master/blockchain) -
Implements Decred block handling and chain selection rules
* [blockchain/fullblocktests](https://github.com/decred/dcrd/tree/master/blockchain/fullblocktests) -
Provides a set of block tests for testing the consensus validation rules
* [txscript](https://github.com/decred/dcrd/tree/master/txscript) -
Implements the Decred transaction scripting language
* [dcrec](https://github.com/decred/dcrd/tree/master/dcrec) - Implements
support for the elliptic curve cryptographic functions needed for the
Decred scripts
* [database](https://github.com/decred/dcrd/tree/master/database) -
Provides a database interface for the Decred block chain
* [mempool](https://github.com/decred/dcrd/tree/master/mempool) -
Package mempool provides a policy-enforced pool of unmined decred
transactions.
* [dcrutil](https://github.com/decred/dcrd/tree/master/dcrutil) - Provides
Decred-specific convenience functions and types
<a name="GoModules" />
**5.3 Go Modules**
The following versioned modules are provided by dcrd repository:
* [rpcclient](https://github.com/decred/dcrd/tree/master/rpcclient) - Implements
a robust and easy to use Websocket-enabled Decred JSON-RPC client
* [dcrjson](https://github.com/decred/dcrd/tree/master/dcrjson) - Provides an
extensive API for the underlying JSON-RPC command and return values
* [wire](https://github.com/decred/dcrd/tree/master/wire) - Implements the
Decred wire protocol
* [peer](https://github.com/decred/dcrd/tree/master/peer) - Provides a common
base for creating and managing Decred network peers
* [blockchain](https://github.com/decred/dcrd/tree/master/blockchain) -
Implements Decred block handling and chain selection rules
* [stake](https://github.com/decred/dcrd/tree/master/blockchain/stake) -
Provides an API for working with stake transactions and other portions
related to the Proof-of-Stake (PoS) system
* [txscript](https://github.com/decred/dcrd/tree/master/txscript) -
Implements the Decred transaction scripting language
* [dcrec](https://github.com/decred/dcrd/tree/master/dcrec) - Provides constants
for the supported cryptographic signatures supported by Decred scripts
* [secp256k1](https://github.com/decred/dcrd/tree/master/dcrec/secp256k1) -
Implements the secp256k1 elliptic curve
* [edwards](https://github.com/decred/dcrd/tree/master/dcrec/edwards) -
Implements the edwards25519 twisted Edwards curve
* [database](https://github.com/decred/dcrd/tree/master/database) -
Provides a database interface for the Decred block chain
* [mempool](https://github.com/decred/dcrd/tree/master/mempool) - Provides a
policy-enforced pool of unmined Decred transactions
* [dcrutil](https://github.com/decred/dcrd/tree/master/dcrutil) - Provides
Decred-specific convenience functions and types
* [chaincfg](https://github.com/decred/dcrd/tree/master/chaincfg) - Defines
chain configuration parameters for the standard Decred networks and allows
callers to define their own custom Decred networks for testing puproses
* [chainhash](https://github.com/decred/dcrd/tree/master/chaincfg/chainhash) -
Provides a generic hash type and associated functions that allows the
specific hash algorithm to be abstracted.
* [connmgr](https://github.com/decred/dcrd/tree/master/connmgr) -
Package connmgr implements a generic Decred network connection manager.
specific hash algorithm to be abstracted
* [certgen](https://github.com/decred/dcrd/tree/master/certgen) - Provides a
function for creating a new TLS certificate key pair, typically used for
encrypting RPC and websocket communications
* [addrmgr](https://github.com/decred/dcrd/tree/master/addrmgr) - Provides a
concurrency safe Decred network address manager
* [connmgr](https://github.com/decred/dcrd/tree/master/connmgr) - Implements a
generic Decred network connection manager
* [hdkeychain](https://github.com/decred/dcrd/tree/master/hdkeychain) - Provides
an API for working with Decred hierarchical deterministic extended keys
* [gcs](https://github.com/decred/dcrd/tree/master/gcs) - Provides an API for
building and using Golomb-coded set filters useful for light clients such as
SPV wallets
<a name="ModuleHierarchy" />
**5.4 Module Hierarchy**
The following diagram shows an overview of the hierarchy for the modules
provided by the dcrd repository.
![Module Hierarchy](./assets/module_hierarchy.svg)

View File

@ -0,0 +1,61 @@
digraph {
graph [splines=ortho colorscheme=svg label=<<u>Module Hierarchy</u>> labelloc=t fontsize=18.0]
node [shape=box style="filled, rounded"]
certgen [label="certgen" fillcolor=darkkhaki]
chainhash [label="chaincfg/chainhash" fillcolor=aquamarine]
dcrjson [label="dcrjson" fillcolor=indianred]
wire [label="wire" fillcolor=coral]
addrmgr [label="addrmgr" fillcolor=lightsalmon]
chaincfg [label="chaincfg" fillcolor=cadetblue]
connmgr [label="connmgr" fillcolor=mistyrose]
dcrec [label="dcrec" fillcolor=mediumpurple]
edwards [label="dcrec/edwards" fillcolor=lightseagreen]
secp256k1 [label="dcrec/secp256k1" fillcolor=mediumvioletred]
dcrutil [label="dcrutil" fillcolor=burlywood]
database [label="database" fillcolor=dodgerblue]
hdkeychain [label="hdkeychain" fillcolor=deepskyblue]
txscript [label="txscript" fillcolor=mediumspringgreen]
stake [label="blockchain/stake" fillcolor=bisque]
gcs [label="gcs" fillcolor=gold]
blockchain [label="blockchain" fillcolor=orchid]
mempool [label="mempool" fillcolor=slategray]
mining [label="mining" fillcolor=chartreuse]
peer [label="peer" fillcolor=khaki]
rpcclient [label="rpcclient" fillcolor=mediumseagreen]
dcrd [label="dcrd" fillcolor=chocolate]
{rank=same connmgr addrmgr hdkeychain peer rpcclient mempool}
certgen
chainhash -> dcrjson [dir=back color=aquamarine]
chainhash -> wire [dir=back color=aquamarine]
wire -> addrmgr [dir=back color=coral]
wire -> chaincfg [dir=back color=coral]
chaincfg -> connmgr [dir=back color=cadetblue]
chainhash -> secp256k1 [dir=back color=aquamarine]
chaincfg -> dcrutil [dir=back color=cadetblue]
dcrec -> dcrutil [dir=back color=mediumpurple]
edwards -> dcrutil [dir=back color=lightseagreen]
secp256k1 -> dcrutil [dir=back color=mediumvioletred]
dcrutil -> database [dir=back color=burlywood]
dcrutil -> hdkeychain [dir=back color=burlywood]
dcrutil -> txscript [dir=back color=burlywood]
database -> stake [dir=back color=dodgerblue]
txscript -> stake [dir=back color=mediumspringgreen]
stake -> gcs [dir=back color=bisque]
dcrjson -> blockchain [dir=back color=indianred]
gcs -> blockchain [dir=back color=gold]
blockchain -> mining [dir=back color=orchid]
mining -> mempool [dir=back color=chartreuse]
blockchain -> peer [dir=back color=orchid]
blockchain -> rpcclient [dir=back color=orchid]
mempool -> dcrd [dir=back color=slategray]
certgen -> dcrd [dir=back color=darkkhaki]
addrmgr -> dcrd [dir=back color=lightsalmon]
hdkeychain -> dcrd [dir=back color=deepskyblue]
connmgr -> dcrd [dir=back color=mistyrose]
rpcclient -> dcrd [dir=back color=mediumseagreen]
peer -> dcrd [dir=back color=khaki]
}

View File

@ -0,0 +1,269 @@
<?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 2.38.0 (20140413.2041)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="573pt" height="792pt"
viewBox="0.00 0.00 573.00 792.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 788)">
<title>%3</title>
<polygon fill="white" stroke="#000000" points="-4,4 -4,-788 569,-788 569,4 -4,4"/>
<text text-anchor="start" x="216" y="-766.6" font-family="Times New Roman,serif" text-decoration="underline" font-size="18.00">Module Hierarchy</text>
<!-- certgen -->
<g id="node1" class="node"><title>certgen</title>
<path fill="darkkhaki" stroke="black" d="M45,-108C45,-108 12,-108 12,-108 6,-108 0,-102 0,-96 0,-96 0,-84 0,-84 0,-78 6,-72 12,-72 12,-72 45,-72 45,-72 51,-72 57,-78 57,-84 57,-84 57,-96 57,-96 57,-102 51,-108 45,-108"/>
<text text-anchor="middle" x="28.5" y="-86.3" font-family="Times New Roman,serif" font-size="14.00">certgen</text>
</g>
<!-- dcrd -->
<g id="node22" class="node"><title>dcrd</title>
<path fill="chocolate" stroke="black" d="M296.5,-36C296.5,-36 266.5,-36 266.5,-36 260.5,-36 254.5,-30 254.5,-24 254.5,-24 254.5,-12 254.5,-12 254.5,-6 260.5,-0 266.5,-0 266.5,-0 296.5,-0 296.5,-0 302.5,-0 308.5,-6 308.5,-12 308.5,-12 308.5,-24 308.5,-24 308.5,-30 302.5,-36 296.5,-36"/>
<text text-anchor="middle" x="281.5" y="-14.3" font-family="Times New Roman,serif" font-size="14.00">dcrd</text>
</g>
<!-- certgen&#45;&gt;dcrd -->
<g id="edge24" class="edge"><title>certgen&#45;&gt;dcrd</title>
<path fill="none" stroke="darkkhaki" d="M28.5,-61.6198C28.5,-61.6198 28.5,-9 28.5,-9 28.5,-9 189.157,-9 254.425,-9"/>
<polygon fill="darkkhaki" stroke="darkkhaki" points="25.0001,-61.6198 28.5,-71.6198 32.0001,-61.6199 25.0001,-61.6198"/>
</g>
<!-- chainhash -->
<g id="node2" class="node"><title>chainhash</title>
<path fill="aquamarine" stroke="black" d="M456.5,-756C456.5,-756 358.5,-756 358.5,-756 352.5,-756 346.5,-750 346.5,-744 346.5,-744 346.5,-732 346.5,-732 346.5,-726 352.5,-720 358.5,-720 358.5,-720 456.5,-720 456.5,-720 462.5,-720 468.5,-726 468.5,-732 468.5,-732 468.5,-744 468.5,-744 468.5,-750 462.5,-756 456.5,-756"/>
<text text-anchor="middle" x="407.5" y="-734.3" font-family="Times New Roman,serif" font-size="14.00">chaincfg/chainhash</text>
</g>
<!-- dcrjson -->
<g id="node3" class="node"><title>dcrjson</title>
<path fill="indianred" stroke="black" d="M509,-540C509,-540 474,-540 474,-540 468,-540 462,-534 462,-528 462,-528 462,-516 462,-516 462,-510 468,-504 474,-504 474,-504 509,-504 509,-504 515,-504 521,-510 521,-516 521,-516 521,-528 521,-528 521,-534 515,-540 509,-540"/>
<text text-anchor="middle" x="491.5" y="-518.3" font-family="Times New Roman,serif" font-size="14.00">dcrjson</text>
</g>
<!-- chainhash&#45;&gt;dcrjson -->
<g id="edge1" class="edge"><title>chainhash&#45;&gt;dcrjson</title>
<path fill="none" stroke="aquamarine" d="M478.572,-738C478.572,-738 494.75,-738 494.75,-738 494.75,-738 494.75,-591.958 494.75,-540.045"/>
<polygon fill="aquamarine" stroke="aquamarine" points="478.572,-734.5 468.572,-738 478.572,-741.5 478.572,-734.5"/>
</g>
<!-- wire -->
<g id="node4" class="node"><title>wire</title>
<path fill="coral" stroke="black" d="M191.5,-684C191.5,-684 161.5,-684 161.5,-684 155.5,-684 149.5,-678 149.5,-672 149.5,-672 149.5,-660 149.5,-660 149.5,-654 155.5,-648 161.5,-648 161.5,-648 191.5,-648 191.5,-648 197.5,-648 203.5,-654 203.5,-660 203.5,-660 203.5,-672 203.5,-672 203.5,-678 197.5,-684 191.5,-684"/>
<text text-anchor="middle" x="176.5" y="-662.3" font-family="Times New Roman,serif" font-size="14.00">wire</text>
</g>
<!-- chainhash&#45;&gt;wire -->
<g id="edge2" class="edge"><title>chainhash&#45;&gt;wire</title>
<path fill="none" stroke="aquamarine" d="M336.203,-738C336.203,-738 176.5,-738 176.5,-738 176.5,-738 176.5,-705.498 176.5,-684.169"/>
<polygon fill="aquamarine" stroke="aquamarine" points="336.203,-741.5 346.203,-738 336.203,-734.5 336.203,-741.5"/>
</g>
<!-- secp256k1 -->
<g id="node10" class="node"><title>secp256k1</title>
<path fill="mediumvioletred" stroke="black" d="M451.5,-684C451.5,-684 363.5,-684 363.5,-684 357.5,-684 351.5,-678 351.5,-672 351.5,-672 351.5,-660 351.5,-660 351.5,-654 357.5,-648 363.5,-648 363.5,-648 451.5,-648 451.5,-648 457.5,-648 463.5,-654 463.5,-660 463.5,-660 463.5,-672 463.5,-672 463.5,-678 457.5,-684 451.5,-684"/>
<text text-anchor="middle" x="407.5" y="-662.3" font-family="Times New Roman,serif" font-size="14.00">dcrec/secp256k1</text>
</g>
<!-- chainhash&#45;&gt;secp256k1 -->
<g id="edge6" class="edge"><title>chainhash&#45;&gt;secp256k1</title>
<path fill="none" stroke="aquamarine" d="M407.5,-709.831C407.5,-709.831 407.5,-684.413 407.5,-684.413"/>
<polygon fill="aquamarine" stroke="aquamarine" points="404,-709.831 407.5,-719.831 411,-709.831 404,-709.831"/>
</g>
<!-- blockchain -->
<g id="node17" class="node"><title>blockchain</title>
<path fill="orchid" stroke="black" d="M481,-252C481,-252 428,-252 428,-252 422,-252 416,-246 416,-240 416,-240 416,-228 416,-228 416,-222 422,-216 428,-216 428,-216 481,-216 481,-216 487,-216 493,-222 493,-228 493,-228 493,-240 493,-240 493,-246 487,-252 481,-252"/>
<text text-anchor="middle" x="454.5" y="-230.3" font-family="Times New Roman,serif" font-size="14.00">blockchain</text>
</g>
<!-- dcrjson&#45;&gt;blockchain -->
<g id="edge17" class="edge"><title>dcrjson&#45;&gt;blockchain</title>
<path fill="none" stroke="indianred" d="M478.25,-493.984C478.25,-493.984 478.25,-252.009 478.25,-252.009"/>
<polygon fill="indianred" stroke="indianred" points="474.75,-493.984 478.25,-503.984 481.75,-493.984 474.75,-493.984"/>
</g>
<!-- addrmgr -->
<g id="node5" class="node"><title>addrmgr</title>
<path fill="lightsalmon" stroke="black" d="M127.5,-108C127.5,-108 87.5,-108 87.5,-108 81.5,-108 75.5,-102 75.5,-96 75.5,-96 75.5,-84 75.5,-84 75.5,-78 81.5,-72 87.5,-72 87.5,-72 127.5,-72 127.5,-72 133.5,-72 139.5,-78 139.5,-84 139.5,-84 139.5,-96 139.5,-96 139.5,-102 133.5,-108 127.5,-108"/>
<text text-anchor="middle" x="107.5" y="-86.3" font-family="Times New Roman,serif" font-size="14.00">addrmgr</text>
</g>
<!-- wire&#45;&gt;addrmgr -->
<g id="edge3" class="edge"><title>wire&#45;&gt;addrmgr</title>
<path fill="none" stroke="coral" d="M139.229,-666C139.229,-666 107.5,-666 107.5,-666 107.5,-666 107.5,-206.099 107.5,-108.19"/>
<polygon fill="coral" stroke="coral" points="139.229,-669.5 149.229,-666 139.229,-662.5 139.229,-669.5"/>
</g>
<!-- chaincfg -->
<g id="node6" class="node"><title>chaincfg</title>
<path fill="cadetblue" stroke="black" d="M196.5,-612C196.5,-612 156.5,-612 156.5,-612 150.5,-612 144.5,-606 144.5,-600 144.5,-600 144.5,-588 144.5,-588 144.5,-582 150.5,-576 156.5,-576 156.5,-576 196.5,-576 196.5,-576 202.5,-576 208.5,-582 208.5,-588 208.5,-588 208.5,-600 208.5,-600 208.5,-606 202.5,-612 196.5,-612"/>
<text text-anchor="middle" x="176.5" y="-590.3" font-family="Times New Roman,serif" font-size="14.00">chaincfg</text>
</g>
<!-- wire&#45;&gt;chaincfg -->
<g id="edge4" class="edge"><title>wire&#45;&gt;chaincfg</title>
<path fill="none" stroke="coral" d="M176.5,-637.831C176.5,-637.831 176.5,-612.413 176.5,-612.413"/>
<polygon fill="coral" stroke="coral" points="173,-637.831 176.5,-647.831 180,-637.831 173,-637.831"/>
</g>
<!-- addrmgr&#45;&gt;dcrd -->
<g id="edge25" class="edge"><title>addrmgr&#45;&gt;dcrd</title>
<path fill="none" stroke="lightsalmon" d="M107.5,-61.8314C107.5,-61.8314 107.5,-18 107.5,-18 107.5,-18 205.375,-18 254.313,-18"/>
<polygon fill="lightsalmon" stroke="lightsalmon" points="104,-61.8313 107.5,-71.8314 111,-61.8314 104,-61.8313"/>
</g>
<!-- connmgr -->
<g id="node7" class="node"><title>connmgr</title>
<path fill="mistyrose" stroke="black" d="M211.5,-108C211.5,-108 169.5,-108 169.5,-108 163.5,-108 157.5,-102 157.5,-96 157.5,-96 157.5,-84 157.5,-84 157.5,-78 163.5,-72 169.5,-72 169.5,-72 211.5,-72 211.5,-72 217.5,-72 223.5,-78 223.5,-84 223.5,-84 223.5,-96 223.5,-96 223.5,-102 217.5,-108 211.5,-108"/>
<text text-anchor="middle" x="190.5" y="-86.3" font-family="Times New Roman,serif" font-size="14.00">connmgr</text>
</g>
<!-- chaincfg&#45;&gt;connmgr -->
<g id="edge5" class="edge"><title>chaincfg&#45;&gt;connmgr</title>
<path fill="none" stroke="cadetblue" d="M174.5,-565.765C174.5,-565.765 174.5,-108.211 174.5,-108.211"/>
<polygon fill="cadetblue" stroke="cadetblue" points="171,-565.765 174.5,-575.765 178,-565.765 171,-565.765"/>
</g>
<!-- dcrutil -->
<g id="node11" class="node"><title>dcrutil</title>
<path fill="burlywood" stroke="black" d="M354.5,-540C354.5,-540 324.5,-540 324.5,-540 318.5,-540 312.5,-534 312.5,-528 312.5,-528 312.5,-516 312.5,-516 312.5,-510 318.5,-504 324.5,-504 324.5,-504 354.5,-504 354.5,-504 360.5,-504 366.5,-510 366.5,-516 366.5,-516 366.5,-528 366.5,-528 366.5,-534 360.5,-540 354.5,-540"/>
<text text-anchor="middle" x="339.5" y="-518.3" font-family="Times New Roman,serif" font-size="14.00">dcrutil</text>
</g>
<!-- chaincfg&#45;&gt;dcrutil -->
<g id="edge7" class="edge"><title>chaincfg&#45;&gt;dcrutil</title>
<path fill="none" stroke="cadetblue" d="M191.5,-565.831C191.5,-565.831 191.5,-522 191.5,-522 191.5,-522 269.628,-522 312.355,-522"/>
<polygon fill="cadetblue" stroke="cadetblue" points="188,-565.831 191.5,-575.831 195,-565.831 188,-565.831"/>
</g>
<!-- connmgr&#45;&gt;dcrd -->
<g id="edge27" class="edge"><title>connmgr&#45;&gt;dcrd</title>
<path fill="none" stroke="mistyrose" d="M190.5,-61.7778C190.5,-61.7778 190.5,-27 190.5,-27 190.5,-27 227.392,-27 254.197,-27"/>
<polygon fill="mistyrose" stroke="mistyrose" points="187,-61.7778 190.5,-71.7778 194,-61.7778 187,-61.7778"/>
</g>
<!-- dcrec -->
<g id="node8" class="node"><title>dcrec</title>
<path fill="mediumpurple" stroke="black" d="M268.5,-612C268.5,-612 238.5,-612 238.5,-612 232.5,-612 226.5,-606 226.5,-600 226.5,-600 226.5,-588 226.5,-588 226.5,-582 232.5,-576 238.5,-576 238.5,-576 268.5,-576 268.5,-576 274.5,-576 280.5,-582 280.5,-588 280.5,-588 280.5,-600 280.5,-600 280.5,-606 274.5,-612 268.5,-612"/>
<text text-anchor="middle" x="253.5" y="-590.3" font-family="Times New Roman,serif" font-size="14.00">dcrec</text>
</g>
<!-- dcrec&#45;&gt;dcrutil -->
<g id="edge8" class="edge"><title>dcrec&#45;&gt;dcrutil</title>
<path fill="none" stroke="mediumpurple" d="M261,-565.778C261,-565.778 261,-531 261,-531 261,-531 289.778,-531 312.485,-531"/>
<polygon fill="mediumpurple" stroke="mediumpurple" points="257.5,-565.778 261,-575.778 264.5,-565.778 257.5,-565.778"/>
</g>
<!-- edwards -->
<g id="node9" class="node"><title>edwards</title>
<path fill="lightseagreen" stroke="black" d="M386,-612C386,-612 311,-612 311,-612 305,-612 299,-606 299,-600 299,-600 299,-588 299,-588 299,-582 305,-576 311,-576 311,-576 386,-576 386,-576 392,-576 398,-582 398,-588 398,-588 398,-600 398,-600 398,-606 392,-612 386,-612"/>
<text text-anchor="middle" x="348.5" y="-590.3" font-family="Times New Roman,serif" font-size="14.00">dcrec/edwards</text>
</g>
<!-- edwards&#45;&gt;dcrutil -->
<g id="edge9" class="edge"><title>edwards&#45;&gt;dcrutil</title>
<path fill="none" stroke="lightseagreen" d="M339.5,-565.831C339.5,-565.831 339.5,-540.413 339.5,-540.413"/>
<polygon fill="lightseagreen" stroke="lightseagreen" points="336,-565.831 339.5,-575.831 343,-565.831 336,-565.831"/>
</g>
<!-- secp256k1&#45;&gt;dcrutil -->
<g id="edge10" class="edge"><title>secp256k1&#45;&gt;dcrutil</title>
<path fill="none" stroke="mediumvioletred" d="M425,-637.959C425,-637.959 425,-528 425,-528 425,-528 391.602,-528 366.553,-528"/>
<polygon fill="mediumvioletred" stroke="mediumvioletred" points="421.5,-637.959 425,-647.959 428.5,-637.959 421.5,-637.959"/>
</g>
<!-- database -->
<g id="node12" class="node"><title>database</title>
<path fill="dodgerblue" stroke="black" d="M440,-468C440,-468 399,-468 399,-468 393,-468 387,-462 387,-456 387,-456 387,-444 387,-444 387,-438 393,-432 399,-432 399,-432 440,-432 440,-432 446,-432 452,-438 452,-444 452,-444 452,-456 452,-456 452,-462 446,-468 440,-468"/>
<text text-anchor="middle" x="419.5" y="-446.3" font-family="Times New Roman,serif" font-size="14.00">database</text>
</g>
<!-- dcrutil&#45;&gt;database -->
<g id="edge11" class="edge"><title>dcrutil&#45;&gt;database</title>
<path fill="none" stroke="burlywood" d="M376.621,-516C376.621,-516 392.5,-516 392.5,-516 392.5,-516 392.5,-487.576 392.5,-468.035"/>
<polygon fill="burlywood" stroke="burlywood" points="376.621,-512.5 366.621,-516 376.621,-519.5 376.621,-512.5"/>
</g>
<!-- hdkeychain -->
<g id="node13" class="node"><title>hdkeychain</title>
<path fill="deepskyblue" stroke="black" d="M309.5,-108C309.5,-108 253.5,-108 253.5,-108 247.5,-108 241.5,-102 241.5,-96 241.5,-96 241.5,-84 241.5,-84 241.5,-78 247.5,-72 253.5,-72 253.5,-72 309.5,-72 309.5,-72 315.5,-72 321.5,-78 321.5,-84 321.5,-84 321.5,-96 321.5,-96 321.5,-102 315.5,-108 309.5,-108"/>
<text text-anchor="middle" x="281.5" y="-86.3" font-family="Times New Roman,serif" font-size="14.00">hdkeychain</text>
</g>
<!-- dcrutil&#45;&gt;hdkeychain -->
<g id="edge12" class="edge"><title>dcrutil&#45;&gt;hdkeychain</title>
<path fill="none" stroke="burlywood" d="M305.277,-513C305.277,-513 304.5,-513 304.5,-513 304.5,-513 304.5,-189.141 304.5,-108.176"/>
<polygon fill="burlywood" stroke="burlywood" points="302.268,-516.5 312.268,-513 302.268,-509.5 302.268,-516.5"/>
</g>
<!-- txscript -->
<g id="node14" class="node"><title>txscript</title>
<path fill="mediumspringgreen" stroke="black" d="M357,-468C357,-468 322,-468 322,-468 316,-468 310,-462 310,-456 310,-456 310,-444 310,-444 310,-438 316,-432 322,-432 322,-432 357,-432 357,-432 363,-432 369,-438 369,-444 369,-444 369,-456 369,-456 369,-462 363,-468 357,-468"/>
<text text-anchor="middle" x="339.5" y="-446.3" font-family="Times New Roman,serif" font-size="14.00">txscript</text>
</g>
<!-- dcrutil&#45;&gt;txscript -->
<g id="edge13" class="edge"><title>dcrutil&#45;&gt;txscript</title>
<path fill="none" stroke="burlywood" d="M339.5,-493.831C339.5,-493.831 339.5,-468.413 339.5,-468.413"/>
<polygon fill="burlywood" stroke="burlywood" points="336,-493.831 339.5,-503.831 343,-493.831 336,-493.831"/>
</g>
<!-- stake -->
<g id="node15" class="node"><title>stake</title>
<path fill="bisque" stroke="black" d="M451.5,-396C451.5,-396 365.5,-396 365.5,-396 359.5,-396 353.5,-390 353.5,-384 353.5,-384 353.5,-372 353.5,-372 353.5,-366 359.5,-360 365.5,-360 365.5,-360 451.5,-360 451.5,-360 457.5,-360 463.5,-366 463.5,-372 463.5,-372 463.5,-384 463.5,-384 463.5,-390 457.5,-396 451.5,-396"/>
<text text-anchor="middle" x="408.5" y="-374.3" font-family="Times New Roman,serif" font-size="14.00">blockchain/stake</text>
</g>
<!-- database&#45;&gt;stake -->
<g id="edge14" class="edge"><title>database&#45;&gt;stake</title>
<path fill="none" stroke="dodgerblue" d="M419.5,-421.831C419.5,-421.831 419.5,-396.413 419.5,-396.413"/>
<polygon fill="dodgerblue" stroke="dodgerblue" points="416,-421.831 419.5,-431.831 423,-421.831 416,-421.831"/>
</g>
<!-- hdkeychain&#45;&gt;dcrd -->
<g id="edge26" class="edge"><title>hdkeychain&#45;&gt;dcrd</title>
<path fill="none" stroke="deepskyblue" d="M281.5,-61.8314C281.5,-61.8314 281.5,-36.4133 281.5,-36.4133"/>
<polygon fill="deepskyblue" stroke="deepskyblue" points="278,-61.8313 281.5,-71.8314 285,-61.8314 278,-61.8313"/>
</g>
<!-- txscript&#45;&gt;stake -->
<g id="edge15" class="edge"><title>txscript&#45;&gt;stake</title>
<path fill="none" stroke="mediumspringgreen" d="M361.25,-421.831C361.25,-421.831 361.25,-396.413 361.25,-396.413"/>
<polygon fill="mediumspringgreen" stroke="mediumspringgreen" points="357.75,-421.831 361.25,-431.831 364.75,-421.831 357.75,-421.831"/>
</g>
<!-- gcs -->
<g id="node16" class="node"><title>gcs</title>
<path fill="gold" stroke="black" d="M437.5,-324C437.5,-324 407.5,-324 407.5,-324 401.5,-324 395.5,-318 395.5,-312 395.5,-312 395.5,-300 395.5,-300 395.5,-294 401.5,-288 407.5,-288 407.5,-288 437.5,-288 437.5,-288 443.5,-288 449.5,-294 449.5,-300 449.5,-300 449.5,-312 449.5,-312 449.5,-318 443.5,-324 437.5,-324"/>
<text text-anchor="middle" x="422.5" y="-302.3" font-family="Times New Roman,serif" font-size="14.00">gcs</text>
</g>
<!-- stake&#45;&gt;gcs -->
<g id="edge16" class="edge"><title>stake&#45;&gt;gcs</title>
<path fill="none" stroke="bisque" d="M422.5,-349.831C422.5,-349.831 422.5,-324.413 422.5,-324.413"/>
<polygon fill="bisque" stroke="bisque" points="419,-349.831 422.5,-359.831 426,-349.831 419,-349.831"/>
</g>
<!-- gcs&#45;&gt;blockchain -->
<g id="edge18" class="edge"><title>gcs&#45;&gt;blockchain</title>
<path fill="none" stroke="gold" d="M432.75,-277.831C432.75,-277.831 432.75,-252.413 432.75,-252.413"/>
<polygon fill="gold" stroke="gold" points="429.25,-277.831 432.75,-287.831 436.25,-277.831 429.25,-277.831"/>
</g>
<!-- mining -->
<g id="node19" class="node"><title>mining</title>
<path fill="chartreuse" stroke="black" d="M401.5,-180C401.5,-180 371.5,-180 371.5,-180 365.5,-180 359.5,-174 359.5,-168 359.5,-168 359.5,-156 359.5,-156 359.5,-150 365.5,-144 371.5,-144 371.5,-144 401.5,-144 401.5,-144 407.5,-144 413.5,-150 413.5,-156 413.5,-156 413.5,-168 413.5,-168 413.5,-174 407.5,-180 401.5,-180"/>
<text text-anchor="middle" x="386.5" y="-158.3" font-family="Times New Roman,serif" font-size="14.00">mining</text>
</g>
<!-- blockchain&#45;&gt;mining -->
<g id="edge19" class="edge"><title>blockchain&#45;&gt;mining</title>
<path fill="none" stroke="orchid" d="M421.75,-205.831C421.75,-205.831 421.75,-162 421.75,-162 421.75,-162 418.308,-162 413.574,-162"/>
<polygon fill="orchid" stroke="orchid" points="418.25,-205.831 421.75,-215.831 425.25,-205.831 418.25,-205.831"/>
</g>
<!-- peer -->
<g id="node20" class="node"><title>peer</title>
<path fill="khaki" stroke="black" d="M469.5,-108C469.5,-108 439.5,-108 439.5,-108 433.5,-108 427.5,-102 427.5,-96 427.5,-96 427.5,-84 427.5,-84 427.5,-78 433.5,-72 439.5,-72 439.5,-72 469.5,-72 469.5,-72 475.5,-72 481.5,-78 481.5,-84 481.5,-84 481.5,-96 481.5,-96 481.5,-102 475.5,-108 469.5,-108"/>
<text text-anchor="middle" x="454.5" y="-86.3" font-family="Times New Roman,serif" font-size="14.00">peer</text>
</g>
<!-- blockchain&#45;&gt;peer -->
<g id="edge21" class="edge"><title>blockchain&#45;&gt;peer</title>
<path fill="none" stroke="orchid" d="M454.5,-205.762C454.5,-205.762 454.5,-108.09 454.5,-108.09"/>
<polygon fill="orchid" stroke="orchid" points="451,-205.762 454.5,-215.762 458,-205.762 451,-205.762"/>
</g>
<!-- rpcclient -->
<g id="node21" class="node"><title>rpcclient</title>
<path fill="mediumseagreen" stroke="black" d="M553,-108C553,-108 512,-108 512,-108 506,-108 500,-102 500,-96 500,-96 500,-84 500,-84 500,-78 506,-72 512,-72 512,-72 553,-72 553,-72 559,-72 565,-78 565,-84 565,-84 565,-96 565,-96 565,-102 559,-108 553,-108"/>
<text text-anchor="middle" x="532.5" y="-86.3" font-family="Times New Roman,serif" font-size="14.00">rpcclient</text>
</g>
<!-- blockchain&#45;&gt;rpcclient -->
<g id="edge22" class="edge"><title>blockchain&#45;&gt;rpcclient</title>
<path fill="none" stroke="orchid" d="M487.25,-205.762C487.25,-205.762 487.25,-90 487.25,-90 487.25,-90 492.597,-90 499.615,-90"/>
<polygon fill="orchid" stroke="orchid" points="483.75,-205.762 487.25,-215.762 490.75,-205.762 483.75,-205.762"/>
</g>
<!-- mempool -->
<g id="node18" class="node"><title>mempool</title>
<path fill="slategray" stroke="black" d="M397,-108C397,-108 352,-108 352,-108 346,-108 340,-102 340,-96 340,-96 340,-84 340,-84 340,-78 346,-72 352,-72 352,-72 397,-72 397,-72 403,-72 409,-78 409,-84 409,-84 409,-96 409,-96 409,-102 403,-108 397,-108"/>
<text text-anchor="middle" x="374.5" y="-86.3" font-family="Times New Roman,serif" font-size="14.00">mempool</text>
</g>
<!-- mempool&#45;&gt;dcrd -->
<g id="edge23" class="edge"><title>mempool&#45;&gt;dcrd</title>
<path fill="none" stroke="slategray" d="M374.5,-61.7778C374.5,-61.7778 374.5,-27 374.5,-27 374.5,-27 336.333,-27 308.9,-27"/>
<polygon fill="slategray" stroke="slategray" points="371,-61.7778 374.5,-71.7778 378,-61.7778 371,-61.7778"/>
</g>
<!-- mining&#45;&gt;mempool -->
<g id="edge20" class="edge"><title>mining&#45;&gt;mempool</title>
<path fill="none" stroke="chartreuse" d="M384.25,-133.831C384.25,-133.831 384.25,-108.413 384.25,-108.413"/>
<polygon fill="chartreuse" stroke="chartreuse" points="380.75,-133.831 384.25,-143.831 387.75,-133.831 380.75,-133.831"/>
</g>
<!-- peer&#45;&gt;dcrd -->
<g id="edge29" class="edge"><title>peer&#45;&gt;dcrd</title>
<path fill="none" stroke="khaki" d="M454.5,-61.8314C454.5,-61.8314 454.5,-18 454.5,-18 454.5,-18 357.188,-18 308.531,-18"/>
<polygon fill="khaki" stroke="khaki" points="451,-61.8313 454.5,-71.8314 458,-61.8314 451,-61.8313"/>
</g>
<!-- rpcclient&#45;&gt;dcrd -->
<g id="edge28" class="edge"><title>rpcclient&#45;&gt;dcrd</title>
<path fill="none" stroke="mediumseagreen" d="M532.5,-61.6198C532.5,-61.6198 532.5,-9 532.5,-9 532.5,-9 373.893,-9 308.839,-9"/>
<polygon fill="mediumseagreen" stroke="mediumseagreen" points="529,-61.6198 532.5,-71.6198 536,-61.6199 529,-61.6198"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB