Skip to content

Releases: dragonchain/dragonchain

Release 4.4.0

05 Feb 20:59
47ecb3e
Compare
Choose a tag to compare

This is a feature release for Dragonchain. It includes the ability to delete a contract by its transaction type, publish signed interchain transactions, and now includes chain name in L4 blocks

Please note that due to the schema change of L4 blocks, all L1s using Dragon Net will need to update, or they will not be able to handle the new L4 schema when getting verifications from updated L4s.

As usual, the helm chart is provided packaged in dragonchain's helm repo, and has been signed with @cheeseandcereal's pgp key 0xC16C6CC0 which is available on keybase and various PGP key servers.

Changelog

  • Feature:
    • Modify L4 block schema to include chain name in the L4 block header
    • Add new endpoint DELETE /v1/contract/txn_type/<txn_type> for deleting smart contracts by transaction type
    • Add new endpoint POST /v1/interchains/transaction/publish for publishing a signed interchain transaction
  • Bugs:
    • Fix issue where L5 recovery queue would not process when trying to resolve already resolved claim-checks
  • Packaging:
    • Update redis, web3, and boto3 dependencies
    • Update redisearch in helm chart to 1.6.7
    • Update fwatchdog to 0.18.10 for OpenFaaS smart contracts
  • Development:
    • Removed all references about lab chain
    • Remove codeowners

Release 4.3.3

17 Jan 00:15
79d73af
Compare
Choose a tag to compare

This is a small bugfix release/update for Dragonchain. Updating is recommended, but not required

As usual, the helm chart is provided packaged in dragonchain's helm repo, and has been signed with @cheeseandcereal's pgp key 0xC16C6CC0 which is available on keybase and various PGP key servers.

Changelog

  • Bugs:
    • Adds Content-Type header to all verification notifications
    • Add retry logic to catch failed job_processor jobs
    • Fixes double quote error on VERIFICATION_NOTIFICATION json deployment
    • Fix bug where an L1 processing a receipt from an L5 could result in dropping some receipts
  • Packaging:
    • Update redisearch, base58, and boto3 dependencies
    • Un-pin python to version 3.8.X
    • Update redisearch in helm chart to 1.4.20
  • Development:
    • Fix tests for python 3.8.1
    • Use helm 3 (specifically 3.0.2) for dependency container and lint checking

Release 4.3.2

24 Dec 01:15
706f117
Compare
Choose a tag to compare

This is a small bugfix release for a bug that was introduced to L1 broadcast processors in 4.3.1

As usual, the helm chart is provided packaged in dragonchain's helm repo, and has been signed with @cheeseandcereal's pgp key 0xC16C6CC0 which is available on keybase and various PGP key servers.

Changelog

  • Bugs:
    • Fix bug that would cause broadcast processor to fail when handling sending blocks to L5 chains
  • Packaging:
    • Update boto3 dependency
    • Pin python to 3.8.0
  • CICD:
    • Only push edge containers if building dev code (master)
    • Modify/fix dependency/test docker containers for docker caching

Release 4.3.1 (ARM64 Support)

23 Dec 18:12
4eceedc
Compare
Choose a tag to compare

This is an incremental Dragonchain release with some small code changes/bugfixes, mainly focusing on shrinking the resource footprint of Dragonchain.
This release also contains full official support for ARM64 on L2+ chains, included pre-built ARM64 docker containers.

Redisearch has been made an optional component for L2+ chains, greatly reducing the footprint of these chains. By default, redisearch will no longer be installed with L2+ chains. Please keep in mind that redisearch will NOT run on ARM64 machines, however it can be optionally enable when deploying the helm chart for L2+ chains. Removing redisearch removes any query functionality of the chain, which can be regained by simply re-enabling redisearch on helm deployment if desired.

Note that with ARM64 support, Dragonchain has been tested and can be ran on a raspberry pi with 2GB or more of RAM. See the additional raspberry pi docs for more information.

As usual, the helm chart is provided packaged in dragonchain's helm repo, and has been signed with @cheeseandcereal's pgp key 0xC16C6CC0 which is available on keybase and various PGP key servers.

Changelog

  • Feature:
    • Add field to status endpoint return to indicate if indexing (redisearch) is on/off
    • Allow get/list/update on smart contract api keys (allowing their permissions to be viewed/changed)
  • Bugs:
    • Fix bug where updating an existing secret for a smart contract would cause the contract deployment to fail
    • Restrict contract create/update schema to deny overwriting reserved 'secret-key' and 'auth-key-id' secrets
    • Restrict contract create/update schema to only allow a restricted character-set for secret names so invalid names can't be used (which would previously cause the smart contract build to fail)
  • Documentation:
    • Edit notes about ram usage requirements for Dragonchain
    • Add documentation for deploying with a raspberry pi
  • Packaging:
    • Update boto3, fastjsonschema, and web3 dependencies
    • Change default node level with helm install to L2 (from L1)
    • Allow option for turning redisearch on/off with verification (L2+) nodes (and disable by default)
    • Provide multiarch (arm64/amd64) manifests for built containers in dockerhub
    • Update redisearch in helm chart to 1.4.19
    • Tweak pod resource usages in helm chart for lower requirements
    • Update fwatchdog to 0.18.7 for OpenFaaS smart contracts
  • CICD:
    • Add building for arm64 containers (in addition to existing amd64)
  • Development:
    • Add script to check for newer requirements.txt package versions
    • Implemented deadlines for L5 blocks based on block times and confirmations for public blockchains
    • Remove any concept of api keys starting with WEB_ from being special
    • Deprecate support for Ethereum Classic Testnet (Morden) with ethereum interchain functionality

Release 4.3.0 (API Key Permissioning)

05 Dec 21:09
961c0fc
Compare
Choose a tag to compare

This is the dragonchain release which adds api key permissioning support. API Keys can now have permission documents assigned to them to selectively allow/deny various Dragonchain functions. Check their new docs for more info.

Other than permissioning, this release comes with various bug fixes, including support for a dragon net change which should be considered required for L1 chains. L1 chains that fail to update to this version may result in a broadcast processor which does not function properly (and thus not receive any verifications). All other levels are recommended to update, although not required.

As usual, the helm chart is provided packaged in dragonchain's helm repo, and has been signed with @cheeseandcereal's pgp key 0xC16C6CC0 which is available on keybase and various PGP key servers.

Changelog

  • Feature:
    • Add api key permissioning (check their docs for more info)
    • Add root and permissions document api key information in response when creating/getting/listing/updating api keys
    • Speed up bulk transaction intake with redis pipelines, and increase max transactions in a bulk request to 5000 (from 250)
    • Change error codes expected from matchmaking to support new error code for not enough validating nodes and properly handle claim not found
  • Bugs:
    • Fix a bug where a failure in matchmaking would result in claims not being finalized
  • Documentation:
    • Update documentation links to add the getting started guide
    • Add top-level section for usage documentation
    • Add pages for authentication and permissioning in usage documentation
  • Packaging:
    • Update boto3, aioredis, and gunicorn dependencies
    • Remove now unnnecessary binutils and musl-dev packages from docker build since gunicorn update
    • Update redisearch in helm chart to 1.4.18
    • Update redis in helm chart to 5.0.7
    • Update fwatchdog to 0.18.4 for OpenFaaS smart contracts
  • Development:
    • Added hard limit to the number of L4 blocks included in an L5 block
    • Use independent model and dao for api keys
    • Reduce interchain timeouts so client requests don't timeout

Release 4.2.0 (Binance Interchain Support)

20 Nov 19:59
4dc93ec
Compare
Choose a tag to compare

This is a release in order to add binance interchain support, as well as provide many various performance and bug fix improvements.

Many of the bugs fixed in this release are for running an L1 chain with the provided helm chart, and this version should be considered a requirement for running an L1 chain with smart contracts using the provided chart.

As usual, the helm chart is provided packaged in dragonchain's helm repo, and has been signed with @cheeseandcereal's pgp key 0xC16C6CC0 which is available on keybase and various PGP key servers.

Changelog

  • Feature:
    • Add performance improvements when creating transactions and processing L1 blocks
    • Add interchain support for binance
  • Bugs:
    • Change L5 block redisearch insert to upsert to prevent an occasional edge-case error which could cause an L5 to get stuck
    • Don't require tail to be explicitly provided when requesting smart contract logs
    • Fix a bug where L2+ chains could have the transaction processor go into a failure loop if a block failed to write to storage at some point
    • Fix a bug where Ethereum L5 nodes could estimate a gas price of 0 for low-activity networks
    • Fix a bug where an open-source chain couldn't build smart contracts due to a bad environment variable
    • Fix a bug where a chain could infinitely retry to connect to dragon net
    • Fix a bug with storage deletion using the disk storage interface which could cause unexpected failures
    • Fix a bug with private docker registry delete when deleting smart contracts
    • Fix a bug with smart contract heap get where pre-pending an extra '/' could give bad results
    • Fix a bug where a smart contract key wouldn't get properly cleaned up on smart contract delete
    • Fix a bug when updating/deleting a smart contract where Dragonchain could remove a docker image still being used by other contracts
    • Fix a bug where updating a smart contract with the same image tag wouldn't always pull the latest version
  • Packaging:
    • Update redisearch, boto3, apscheduler, web3, and gunicorn dependencies
    • Add bnb-tx, pycoin, and mnemonic dependencies for binance
    • Add binutils and musl-dev alpine dependencies in Docker container temporarily for gunicorn 20.0.0
  • Development:
    • Revert manual redisearch fixes with dependency fixes
    • Change the way that transaction 404 stubbing is handled for pending transactions
    • Update to python 3.8

Release 4.1.0

25 Oct 18:35
2f5d245
Compare
Choose a tag to compare

This is a primarily bug-fix release, with a few new features, most notably smart contract invoker indexing, verification-notification callback support, and a new helm deployment method with a proper helm repository.

In order to work with the new helm repo deployment, we recommend reading the modified deployment docs here.
Note that this helm chart has been signed with @cheeseandcereal's pgp key 0xC16C6CC0 which is available on keybase and various PGP key servers. You can use this to optionally verify the authenticity of the chart when installing.

Note this update adds the invoker tag field for indexing smart contract transactions.
This will only be added for all new smart contracts after updating to this version (or newer).
If you want/need to retroactively index this field for existing transactions, check these docs for info on manually triggering a re-index which will populate the invoker field where necessary.

Changelog

  • Feature:
    • Default error reporting to save to disk, so that crash logs/tracebacks can be automatically saved
    • Provide better error message when bad input to api doesn't match required schemas
    • Adds verification-notification callback in the reciept endpoint
    • Add indexed redisearch tag field "invoker" by default when indexing smart contract transactions
    • Remove max limit for custom indexes on a transaction type/smart contract
  • Bugs:
    • Fix a bug where getting the cached list of verifications for a block would always fail
    • Fix a bug where existing interchain networks could be overwritten if trying to create a new network with the same blockchain and name
    • Fix a bug where the chain could not parse very old legacy transactions from storage
    • Fix a bug where L5s returned a 404 for the status endpoint when a default interchain was not yet set
    • Fix a bug where very large payloads could attempt to be cached and crash the caching redis
    • Fix a bug so that non-existant routes in the api now properly return a 404
    • Fix a bug where accepting the disable_schedule parameter when updating a contract didn't do anything
    • Fix a bug where the deadline key for l2+ nodes skipping unneeded blocks was generated incorrectly
    • Fix a bug where custom indexes text fields couldn't have both sortable and nostem at the same time
  • Documentation:
    • Change dragonchain deployment docs to reflect helm install changes from helm repository with pinned version
    • Stop posting helm chart directly to docs
  • Packaging:
    • Update aioredis, docker, boto3, web3, redis, fastjsonschema, and aiohttp dependencies
    • Update installed version of redisearch to 1.4.17
    • Update fwatchdog to 0.18.2 for OpenFaaS smart contracts
    • Update helm chart to use a pinned container version by default
    • Use a helm chart repository for helm distribution
    • Add a README for the helm chart itself which will be rendered on helm hub
  • Development:
    • Enforce appVersion in Chart.yaml and image version tags to be always up to date (and add associated version bump helper function in tools.sh)
    • Add strict helm lint checking
    • Add a public docker container for the current build of the master (development) branch (dragonchain/dragonchain_core:edge)

Release 4.0.1

26 Sep 22:42
0dbfd13
Compare
Choose a tag to compare

This is a small bugfix release which fixes a bug which was causing some contract invokers on L1s to crash because of a difference between indexed data and what actually existed in storage.

Changelog

  • Bugs:
    • Fix a bug where the smart contract list and actual underlying data can become out of sync and crash the contract invoker
  • Packaging:
    • Adjust RAM usage of scheduler pod for L1s
    • Update Redis to 5.0.6 in the helm deployment
    • Remove unnecessarily configurable options from opensource-config.yaml

Release 4.0.0 (Indexing Re-haul with Redisearch)

23 Sep 23:53
241bdbc
Compare
Choose a tag to compare

This update introduces various changes, most notably the switch from ElasticSearch to redisearch as the indexing engine. This has required a few breaking changes which primarily exist with custom indexing, and how querying is preformed. Please read the relevant docs page for more details on upgrading to v4.

Changelog

  • Feature:
    • Add new endpoint GET /v1/contract/logs/<contract_id> for getting logs of smart contracts
    • Remove elasticsearch integrations and replace with redisearch
    • Refactor all query endpoints, including changing query inputs (Breaking Change)
    • Changed route for GET /v1/contract from a query to a list (Breaking Change)
    • Add support to disable schedule when updating a smart contract
  • Documentation:
    • Update documentation for redisearch
    • Add new page for migration considerations when upgrading from v3 to v4
    • Add RAM usage requirements
    • Add info about bug/security/project bounty programs
  • Development:
    • Add logs when getting storage errors
    • Resolve all bandit errors and turn up bandit verbosity
    • Move/extract entire helm chart for better control
  • Packaging:
    • Update helm chart version, adding redisearch while removing elasticsearch
    • Remove service links from mounting on pods in the helm chart
    • Expose redis and redisearch image locations in opensource-config.yaml
    • Add redisearch and remove elasticsearch from requirements.txt
    • Update boto3, bit, and aiohttp packages
    • Update fwatchdog to 0.18.0 for OpenFaaS smart contracts
  • CICD:
    • Fixed an issue where the CICD wouldn't properly render changelog or contributing pages
    • Make helm chart be packaged on demand when creating docs
  • Bugs:
    • Fixed an issue where transaction types whose contracts no longer exist couldn't be deleted
    • Fixed a bug with ethereum classic and ethereum classic testnet interchains which caused transactions to be signed improperly
    • Fixed a bug which caused built smart contract images to not be deleted from the image repository when deleting a smart contract

Release 3.5.0 (Interchain Network Refactor)

27 Aug 21:32
ddcd561
Compare
Choose a tag to compare

This release brings upon a few changes, primarily around refactoring interchain network management. Keys for interchain networks such as ethereum or bitcoin are no longer provided upfront before dragonchain creation, but can be provided by the user via various new endpoints (supported with the lastest versions of the SDKs). This also allows users to provide their own private keys for specific ethereum/bitcoin/etc addresses if desired.

Additionally, this release comes with various fixes for the deployment process, which are updated in the docs.

Changelog

  • Feature:
    • Switch to using files for reading secrets for dynamic secret update support
    • Use new schema for NETWORK (for L5 registration and blocks). Will now look like "{blockchain} {extra_data}"
      i.e. "bitcoin testnet3" or "ethereum network_id 2" rather than a pre-set list of enums as before.
      (This allows for things such as custom/private ethereum networks, etc)
    • Add support for creating/saving various interchain networks, including custom interchain nodes, keys, etc
      • Note this also means that a chain can have multiple addresses for the same type of network now (i.e. many ETH addresses)
    • Add routes for refactored interchain support:
      • POST /v1/interchains/bitcoin Create a bitcoin network for the dragonchain to use
      • POST /v1/interchains/ethereum Create an ethereum network for the dragonchain to use
      • PATCH /v1/interchains/bitcoin/<id> Update an already existing bitcoin network of dragonchain
      • PATCH /v1/interchains/ethereum/<id> Update an already existing ethereum network of dragonchain
      • POST /v1/interchains/bitcoin/<id>/transaction Create a bitcoin transaction using one of the chain's networks
      • POST /v1/interchains/ethereum/<id>/transaction Create an ethereum transaction using one of the chain's networks
      • GET /v1/interchains/<blockchain> Get a list of all registered Dragonchain interchains
      • GET /v1/interchains/<blockchain>/<id> Get a particular interchain network from the chain
      • DELETE /v1/interchains/<blockchain>/<id> Delete a particular interchain network from the chain
      • POST /v1/interchains/default (L5 only) Set a default network for level 5 chains to use
      • GET /v1/interchains/default (L5 only) Get the default network set on a level 5 chain
    • Move the following routes legacy support only (they will work for chains upgraded from an old version for backwards compatibility, but will 404 on new chains):
      • GET /public-blockchain-address
      • GET /v1/public-blockchain-address
      • POST /public-blockchain-transaction
      • POST /v1/public-blockchain-transaction
    • Reduced initial delay checks for the webserver so kubernetes will mark the webserver as ready quicker
    • Add direct TLS support for the Dragonchain webserver (for NodePort deployed services)
  • Bug:
    • Fixed some bugs with the helm chart which caused the incorrect dockerhub image to be pulled
  • Documentation:
    • Add docs/update helm chart and values for added TLS support
    • Fixed/elaborated on some of the process for connecting to Dragon Net, including exposing a chain to the internet
    • Add an export which allows hmac key generation to work correctly on MacOS
    • Update Helm chart/values to remove unnecessarily exposed settings
    • Add creation of the dragonchain namespace before creating a secret on deployment
    • Update Golang SDK URL
    • Various spelling fixes
  • Development:
    • Refactored interchain support for easier future integration with further interchains
  • Packaging:
    • Updated boto3, kubernetes, redis, and web3 dependencies
    • Removed unnecessary dependencies, and added speedup extras for aiohttp
    • Update fwatchdog to 0.16.0 for OpenFaaS smart contracts