* Sets up working dockerized build and codex docker image creation
* Making codex configurable from the docker environment
* Sets up two networks with three codex nodes
* enables and exposes metrics endpoint for first node
* Manually performed two-client test scenario with docker containers
* Sets up docker-ignore and docker github workflow
* Wires up all codex CLI arguments to docker env vars
* Makes API_PORT variable optional as well
* Removes duplicate docker-login step
* Fixes path to docker file
* Switches target dockerhub for debugging
* Adds git tag info to --version output
* Exposes version information via debug endpoint
* Debugging docker image
* specifies target platforms for docker build
* specifies platform for QEMU and buildx steps
* Attempt to debug line endings
* Disables march-native in config.nims as test
* Applies make argument to disable architecture optimization during docker build
* Removes subset version tags from docker build
* Restore multi-arch build
* Removes docker-build test branch from CI branches
* initial implementation of repo store
* allow isManifest on multicodec
* rework with new blockstore
* add raw codec
* rework listBlocks
* remove fsstore
* reworking with repostore
* bump datastore
* fix listBlocks iterator
* adding store's common tests
* run common store tests
* remove fsstore backend tests
* bump datastore
* add `listBlocks` tests
* listBlocks filter based on block type
* disabling tests in need of rewriting
* allow passing block type
* move BlockNotFoundError definition
* fix tests
* increase default advertise loop sleep to 10 mins
* use `self`
* add cache quota functionality
* pass meta store and start repo
* add `CacheQuotaNamespace`
* pass meta store
* bump datastore to latest master
* don't use os `/` as key separator
* Added quota limits support
* tests for quota limits
* add block expiration key
* remove unnesesary space
* use idleAsync in listBlocks
* proper test name
* re-add contrlC try/except
* add storage quota and block ttl config options
* clarify comments
* change expires key format
* check for block presence before storing
* bump datastore
* use dht with fixed datastore `has`
* bump datastore to latest master
* bump dht to latest master
* setup and persist private key
* return dht record spr
* helper to remap multiaddr ip and port
* set/update discovery and announce addrs
* add nat and discovery IPs
* allow for announce and DHT addresses separatelly
* update tests
* check for nat or discoveryIp
* fix integration tests
* misc align
* don't share data dirs and and set bootstrap node
* add log scope
* remap announceAddrs after node start
* simplify discovery initialization
* make nat and disc-ip required
* add log scope don't init dht spr in constructor
* bump dht
* dissallow `0.0.0.0` for `--nat`
* [contracts] ContractInteractions.new() now requires account parameter
* [cli] Only perform Ethereum interactions when --eth-account is specified
* [cli] Add --persistence option that is disabled by default
* [cli] Use Option for ethDeployment parameter
* [node] Better error reporting when Ethereum node cannot be reached
also fix a discrepancy where cli option `--cache-size` is documented as
`0 disables the cache` in `codex/conf.nim`, but previously the value `0` would
result in a cache being constructed with default parameter values for
`CacheStore.new()`
Closes#180