All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v0.7.1 - 2025-10-02
- oracle: Enable Slinky pre-blocker to store prices onchain.
- Enable default cosmos/evm preinstalls (i.e. Create2, Multicall3).
- Fix
query-gas-limitinapp.tomlbeing ignored.
v0.7.0 - 2025-09-22
- Disable x/warden, x/act, x/sched, x/async and CosmWasm.
- Bump cosmos/evm to latest commit (pre-v0.5.0).
- Update to Go 1.25
- Remove depinject, return to classic Cosmos SDK app wiring
v0.6.5 - 2025-07-23
- (x/warden) Change the way Keychain's addresses are generated. They now are 20-bytes long to be compatible with EVM.
- (precompiles) Fix panics when dealing with NewKeychainEvent and UpdateKeychainEvent from the x/warden precompiled contract.
- (precompiles/json) Add a new API (
build()) that allows to build an entire json object with a single function call. - (precompiles/json) Add a new API (
parse()) that allows to parse a json object into a schema with a single function call. - (x/async) Add metrics for Plugins (usage counter, bytes in, bytes out, task average time, total fees paid, success ratio).
- Bump to Cosmos SDK v0.53.3.
- (plugin/veniceimg) Generate large image and resize it afterwards, locally. This leads to a much higher image quality.
v0.6.4 - 2025-07-07
This release requires a fresh start. It's not possible to update from older versions to v0.6.4.
- (go-client) Fix handling of EthAccounts in AuthQueryClient
- (x/async) Improve error message when there are no solvers registered for a plugin
- (x/async) Add a list of plugins to register onchain to the genesis file
- (x/async) Initial version of a Venice.ai plugin for LLM completions
- (x/async) PFP image generation plugin using Venice.ai
- (wardend) Fixed EVM initialization on chain id different than "warden-1337_1"
- (wardend) Use upstream cosmos-sdk instead of our fork
- (x/async) Move to a push-based fair selection algorithm, instead of validators competing for solving pending Tasks
- (x/async) Task can return errors instead of outputs, one of "output" or "error" fields will be set
- (x/async) Add PruneTaskTimeout param. After a task is completed (i.e. has a result) it will be permanently deleted from the appdb after this timeout elapses.
- (x/async) Add Plugin's timeout param. This is the maximum time a solver has for submitting the result before the Task is marked as errored automatically.
- (x/crisis) Remove deprecated x/crisis module. See cosmos/cosmos-sdk#23722. Will be removed in Cosmos SDK v0.54.
- (x/sched) Fix a bug leading to invalid sdk.Coins when callback fees were zero
- (x/async) Add governance gated message MsgAddPlugin to create new plugins after genesis
- (x/sched) Rework callbacks to be executed inside a real ethereum transaction
- (x/async) PFP image generation plugin will only take one input (string) which is the AI prompt
- (x/async) Fix missing Solver field in precompile queries
v0.6.3 - 2025-04-16
- (x/async) Rename futures into tasks, and future handlers into plugins
- (x/async) Add a simple Plugin registry for tracking Plugins' IDs onchain
- (x/async) Implement a reward system where task executors and plugin creators can earn fees for their services
- (x/async) Initial version of the QuantKit plugin
- (precompiles) The JSON precompile allowing to operate on JSON
- (x/sched) Add schedule module which allow registering and executing callbacks
- (go-client) Fix additional goroutine being created for every signed transaction
v0.6.2 - 2025-03-05
- (x/act) Use constant formatting strings when wrapping errors
- (wardend) fallback to handle Slinky vote extensions during v0.6.x upgrade
v0.6.1 - 2025-03-03
- (precompiles) Add an ability for contracts to approve actions
- (go-client) Return transaction hash from SendWaitTx
- (keychain-sdk) Log transaction hashes of broadcasted transactions
- (relayer) #992 Added a service to relay transactions into Ethereum
- (prophet) Add self consensus address to prophet
- (precompiles) Add slinky precompiled contract
- (x/warden) Add broadcastType to SignRequest
- (precompiles) Add broadcastType to SignRequest
- (precompiles) #1077 Change status fields from int32 to enums/uint8 in precompile ABIs for improved type safety and consistency
- (wardend) Bump IAVL to v1.2.2. Fixes some potential apphash mismatches that happen in some rare cases.
- (x/async) Scaffold new module with create/read operations
- (x/warden) Sign requests query return all request (not only with broadcastType=BroadcastType.Disabled)
- (prophet) First version. Includes the task runner for Futures and Votes, and the interface for handlers.
- (x/async) Add handlers storages and corresponding methods.
- (x/async) Add contract-callback when future become ready.
- (x/async) Extend async VE with handlers supported by validators.
- (x/async) #1219 Future results are made permanent. Attempting to set a result more than once causes an error.
v0.5.4 - 2024-11-07
- (precompiles) Fix analyzers address convert: change analyzers type from []address to []bytes in warden precompile.
- (precompiles) Fix address type convert and return derived addresses as strings
- (precompiles) Fix error with empty keys in space.
- (precompiles) Return expressions in json encoding.
- (precompiles) Fix spacesByOwner when no spaces.
v0.5.3 - 2024-10-31
- Bump evmos to v20 (stable)
- Add
cometalias totendermintcommand - Fix mempool to be NoOp, for evmos' transactions to work, fixing some non-determinism in the network caused by different mempool settings in
app.toml
v0.5.2 - 2024-10-22
- (x/warden) Fix RejectSignRequestTxCmd - use SignRequestStatus_SIGN_REQUEST_STATUS_REJECTED
- (x/warden) Expose AddKeychainAdmin and RemoveKeychainAdmin in tx.proto to use in precompiles
- (evm) Precompiles for x/act and x/warden
- (x/warden) Fix bug with Id=0 in NewKeyEvent
v0.5.1 - 2024-10-04
- (x/warden) #660 Added
Noncefield to Space to avoid race conditions - (x/warden) Keychain fees are deducted with escrow account
- (wardend) Bump Cosmos SDK to v0.50.9
- (wardend) Bump ibc-go to v8.5.0
- (wardend) Bump slinky to v1.0.10
- (x/warden) #570 Added more metadata to Keychain
- Replaced Description by Name field (required, non-empty)
- Added new Description field instead of replaced one
- Added Url field
- Added Keybase Id field (16 symbols)
- (x/act) #631 Add pruning of timed-out actions
- (x/warden) Make
KeychainFeesfields non-nullable, use an empty list of coins to indicate no fees - (evm) Resolve dependencies issues. For go-ethereum use evmos fork patched with c1b68f1d05a7ee8eee1bde3c4054f49f5d3e3b9f from original repository to support slinky.
- (evm) To adopt ethsecp256k1 use fork of evmos's cosmos-sdk. Fork patched runtime/module adding into ProvideApp two arguments to customize registering interface registry and legacy amino codec.
- (evm) Introduce award denomination to adjust units with Ethereum
- (evm) Using ethsecp256k1 signature for all transactions. Users should reimport their seeds to get new addresses.
- (x/act) Introduce Votes and Approve/Reject expressions for Actions
- (x/act) Add expected expressions to MsgAddAction
- (x/act) Set approve/reject expressions in MsgNewAction. Change rules registry to keep approve/reject expressions.
- (x/act) Rename
RuletoTemplate - (x/act) Remove Template and Approvers from Action.
- (x/act) Remove TemplateId from Key, AdminTemplateId and SignTemplateId from Space
- (evm) Bump evmOS to V20
- (x/act) Add support for sdk.Coins fields in autogenerated CLI commands for new actions
- (x/warden) Add the ability for the user to specify the maximum keychain fee size to be deducted
- (x/warden) Return error if analyzer's address is not bech32
- (x/act) 724 Add
creatorfilter param toRulesquery - (wardend) Validate bech32 format in add-genesis-keychain and add-genesis-space
- (x/gmp) Remove the GMP default params from genesis
- (go-client) Use ethsecp256k1 instead of Cosmos secp256k1
- (wardend) Bump CometBFT to v0.38.11
v0.4.1 - 2024-08-07
- (x/warden) Implemented
AddKeychainAdmin,RemoveKeychainAdminfeatures - (x/warden) Add
AddKeychainAdminandRemoveKeychainAdminto manage Keychain's admins - (cosmwasm) Add interoperability with the following messages, that can now be used in CosmWasm contracts:
MsgNewSignatureRequestKeysBySpaceIdKeyByIdSignRequestsSignRequestById
- (wardend) Upgrade Cosmos SDK to v0.50.8
- (wardend) Upgrade cosmos/iavl to v1.2.0
- (x/act) When an Action is approved, the new approval was not recorded in the database
- (x/warden) Fixed a bug where UpdateKey could be used to set RuleID to a non-existent Rule
- (x/warden) Fixed a bug where Keychains fees could be set to negative or invalid amounts
- (x/warden) Fixed a bug in v3 migrations where some insertions in the database were performed in a non-deterministic order. From our tests this didn't lead to any problem, in this particular case, but we want to play it safe.
- (x/warden) Register error codes
- (x/act) Register error codes
v0.4.0 - 2024-07-17
- (shield) #225 Fix shield to handle grouped expression
- (shield) Add new operators:
<,>,<=,>=,==,!=for comparing integers to each others. - (shield) Add support for
stringobjects - (shield) Add
contains(elem, array)builtin function for checking ifelemis contained in thearray - (shield) Add
+,-,*,/math operators for basic integer arithmetic - (shield) Add negative prefix operator to handle negative expressions and integers
- (shield) Change integer representation from int64 to big.Int
- (x/act) Add
MsgNewActionas unique entrypoint for creating Actions - (x/act) Fix bug where Actions' Results were being wrapped in
Anytwice - (x/act) Add
SimulateRulequery request - (x/act) Add the following events:
EventCreateRuleEventUpdateRuleEventCreateActionEventApproveActionEventActionStateChange
- (x/act) Improve CLI flags allowing to specify enums using their names instead of their numeric values
- (x/warden) Ensure only Keychain's parties can update a SignRequest
- (x/warden) Change Keychain.Fees type to Coins instead of uint64s. This makes possible to receive any token as a fee, not just uward.
- (x/warden) Remove Keychain.IsActive field. This field was used to determine if a Keychain was active or not, to automatically reject incoming requests, but it was never used.
- (x/warden) Add the following events:
EventCreateSpaceEventUpdateSpaceEventAddSpaceOwnerEventRemoveSpaceOwnerEventNewKeyRequestEventNewKeyEventRejectKeyRequestEventUpdateKeyEventNewSignRequestEventFulfilSignRequestEventRejectSignRequestEventNewKeychainEventUpdateKeychainEventAddKeychainParty
- (x/warden) Rename
UpdateKeyRequesttoFulfilKeyRequest - (x/warden) Rename
SignatureRequesttoSignRequest - (x/oracle) Integrate Slinky
- (faucet) New version of the web based Faucet
- (wardend) Add
wardend genesis add-genesis-spaceandwardend genesis add-genesis-keychaincommands to prepare the genesis file - (wardend) analyzers smart contract: a way for 3rd party builders to provide metadata to shield's intents during new signature requests
- (wardend) Initial version Ethereum analyzer
- can be used to pass an Ethereum unsigned transaction, and will return the correct DataForSigning
- (faucet/v2) New web-based version of the faucet that uses recaptcha.
- (faucet/v2) UI/UX tweaks.
- (x/warden) #377 Add
keychain_feesfield toMsgUpdateKeychainmessage - (x/warden) Remove Keychain.AdminIntentId field. This field was used to choose an Intent for operations, but it was never used.
- (x/warden) Add autogenerated CLI subcommands for
MsgNewAction. These make it easier to send transactions such as AddSpaceOwner, etc. - (x/warden) Add an option EncryptionKey to SignRequests. If set, the Keychain is requested to encrypt the signature before sending it back to the Warden Protocol.
- This is useful for users who want to keep their signatures private, allowing them to use in dApps such as dYdX, where the signature is used to "login".
- (x/warden) Remove deprecated
SignMethodfield fromMsgNewSignatureRequest. Use analyzers instead. - (x/act) Fix bug for Rules hooks not having the creator of the Action in the context
- (x/act) Added a new MsgCheckAction for manually re-checking the action rule status
- (x/act) Added Export/Import for the State the module (
Rules,Actions) - (x/gmp) Added a new module to make Axelar GMP requests from Warden.
- (cosmwasm) Installed IBC-Hooks to be able to call CosmWasm contracts from the other chains.
- (shield) fix possible occurring panic in case of nil env
- (x/act) Prevent Rules from being created with an empty name
- (x/warden) Handle analyzers that return string values correctly
- (x/warden) Fix KeyRequests query when KeychainId filter is not set
- (x/warden) Fix SignRequests query when KeychainId filter is not set
- (x/warden) Ensure that SpacesByOwner index is updated when an owner is removed
- (build) Add
just localnetcommand to replaceignite chain serve - (shield) Improved error messages when parsing an unknown token type
- (shield) Add unit tests for AST preprocessor
- (x/warden) Rename Keychain "parties" to "writers" for clarity, as they are the only ones that can write on-chain data on behalf of the Keychain.
v0.3.0 - 2024-03-16
- (x/act) #139 Ability for modules to dynamically resolve variables on Action creation
- x/warden can now resolve
warden.space.ownersin Intent definitions into the list of owners of the space
- x/warden can now resolve
- (x/act) #151 Store Intents' AST, instead of the raw string
- (x/warden) #152 Prevent adding invalid addresses as Keychain parties
- (cosmwasm) #156 Add support for smart contracts by integrating CosmWasm
- (x/warden) #173 Remove
SignTransactionRequestsin favor of justSignRequests
- (shield) #148 Use protobufs for defining the AST
- (x/act) #155 Add MsgUpdateIntent, creators of an Intent can use it to change name and definition of their Intents.
- (x/warden) #159 Resolve
warden.space.ownersin Intent definitions for MsgNewSignRequest and MsgNewSignTransactionRequest - (x/warden) #160 Add Osmosis support
- Derive Osmosis addresses from ECDSA_SECP256K1 keys
- Extract DataForSigning for Osmosis Amino JSON transactions
- (cosmwasm) #171 Add support for executing NewKeyRequest from contracts
- (cosmwasm) #185 Add support for querying AllKeys from contracts
- (x/act) #187 Fix QueryActionsByAddress to not reuse the pointer of iterating variable, causing the query to return the same action multiple times
- (docs) #127 Add CHANGELOG.md
- (ci) #137 Add CodeRabbit configuration file, copied from Cosmos SDK's repo
- (perf) #138 Add benchmarks for most hit queries in
x/wardenandx/act(ActionsByAddress, AllKeys, KeysBySpaceId) - (chore) #180 Update to use pnpm v9.0.0
- (docs) #185 Add CosmWasm integration related docs.
v0.2.0 - 2024-03-26
- (x/warden) #77 Use uint64 IDs for Space and Keychain, instead of string bech32 addresses
- (x/act) #55 Initial release of the
shieldintent engine, replacing the oldboolparserand cleaning up the API - (x/act) #112 Store a list of referenced addresses when a new intent is created. This is useful for querying all intents that reference a given address.
- Refactor of
x/act's andx/warden's store design to improve queries performance:- (x/act) #117 Pin the intent definition when an Action is created instead of just referencing it. This allows faster queries "by address" by storing the list of addresses directly inside the action, instead of having to re-evaluate the linked intent for each action.
- (x/warden) #121 Separate Keys queries into
AllKeys,KeysBySpaceId, andKeyById. This allowed some improvements, especially in theKeysBySpaceIdthat can benefit from a new "space id -> key id" index. - (x/warden) #122 Improve
SpacesByOwnerquery by adding a new "owner -> space id" index.
- (client) #116 Add
warden q wait-txcommand to wait for a transaction to be included in a block- The same command was submitted to Cosmos SDK: cosmos/cosmos-sdk#19870
- (clichain) #113 Initial release of
clichain, a CLI for acting as a Keychain from the command line - (x/warden) #109 Add ability to assign an intent to a key, overriding the SignIntent of the Space
- #110 Add MsgUpdateKey for updating a key's intent
- (keychain-sdk) #92 Increase Keychain SDK's throughput by batching requests into a single transaction
- (snap) #83 Initial release of Warden Protocol's MetaMask snap
- (build) #69 Add Makefile for building
wardend - (faucet) #99 Rate limit faucet requests by IP address, not only by account
- (faucet) #66 Batch multiple faucet request in a single transaction
- (x/warden) #120 Don't stop Keys query if one key is invalid (i.e. fails to derive a layer 1 address)
v0.1.0 - 2024-03-06
Initial release of wardend and launch of the Alfama testnet.