Namada 0.44.1 is a patch release with various fixes, improvements and refactors.
- Fixed the masp indexer client not being able to fetch the notes index from the
namada-masp-indexer
. (#3860)
- Refactored tx crate modules and slightly improved its API. (#3835)
- Improved batch construction to reduce the size of the resulting tx. (#3882)
- SDK query to get liveness information for the network and consensus validator set. (#3899)
Namada 0.44.0 is a minor release containing various fixes for shielded tokens, shielded sync, IBC and its interaction with shielded tokens and various other improvements.
- Support only a transparent address as a refund target of IBC shielding transfer (#3620)
- Make transfers with same source and destion a no-op. (#3675)
- Fix path to compiled WASMs that's validated during join-network. (#3694)
- Now we propagate the error coming from
is_proposal_accepted
instead of falling back on a default. (#3700) - Handle errors when loading wallet file and only create a new one if not found. (#2151)
- Fixed the SDK to generate MASP transactions with the correct expiration (if provided). (#3724)
- Enable the signing logic to fall back to the hardware wallet if a secret key is not found in software wallet store. (#3730)
- The multitoken vp now checks that the involved parties validate the transaction. Improved tests and transfer code. (#3804)
- The masp ref events are now published in a single collection enforcing a correct ordering. Fixed the shielded sync command to account for multiple masp transactions in a single tx. (#3821)
-
Add optional height parameter to get_token_balance (#3530)
-
Improved the consistency and safety of MASP events construction in protocol. (#3669)
-
Reorganized some types and modules and refactored crates re- exports, error handling features and removed unused depdendencies. (#3670)
-
Removed the dev dependencies of wasm-for-tests. (#3676)
-
Improved the user experience of the secret key decryption process. (#3681)
-
Addresses the remaining points of Issue #3307
- Implements the
OfferSnapshot
ABCI call - Implements the
ApplySnapshotChunk
ABCI call - Adds integration tests
(#3687)
- Implements the
-
Improved some governance messages and cli commands arguments. (#3689)
-
Updated toolchain to Rust 1.81.0. (#3690)
-
Include some CLI commands for querying the total supply of any token and the effective total circulating supply of the native token. (#3691)
-
Only re-exporting tendermint-rs v0.37 modules. (#3697)
-
Made the
disposable-gas-payer
cli arg specific to some transactions. (#3699) -
Optimize the format of snapshots taken for state syncing purposes. Snapshots are taken over the entire RocksDB database, packaged into a
zstd
compressedtar
archive, and split into 10 MB chunks. (#3701) -
Implement serde::Serialize for GovernanceParameters, PosParams, OwnedPosParams (#3702)
-
Change the quorum for voting on a default governance proposal from 2/3 to 40%. (#3703)
-
Improve the format of dumped txs. Added command to generate signature without requiring a network connection. (#3715)
-
Moved governance shell sub-module into governance crate using dependency- injection. (#3718)
-
If an additional
reveal_pk
transaction is required, the client now groups it with the actual transaction into a single batch instead of submitting it separately. (#3720) -
Improve the proposal result query to be more descriptive and detail the validator voting period. Fix some other small logging bugs. (#3728)
-
Switched to use typed ChainId instead of a string in all
fn get_chain_id
. (#3733) -
Add an RPC endpoint for the consensus validator set in the SDK. (#3734)
-
Update tendermint-rs, ibc-rs and tower-abci (#3735)
-
Refactored token transfer functions and fixed checks for no-op conditions. (#3736)
-
Support dynamically joining ledger managed tasks. With this change, adding or removing managed tasks from the ledger should be a far easier process to contend with. (#3741)
-
Factored most of the masp code out of the sdk and into shielded token crate. These required the creation of two futher crates: "namada_io" and "namada_wallet". (#3744)
-
Increased the gas cost for storage consumption and improved gas tracking for masp fee payments. (#3746)
-
Upgrade CometBFT to v0.37.11. (#3751)
-
Remove namada-relayer from the build. (#3752)
-
Improve error and help messages to clarify that a .tx file is expected as input to --tx-path for a custom tx. (#3757)
-
Miscellaneous improvements and bug fixes to the dry run command. (#3758)
-
Check the string length of the validator name in provided metadata. (#3779)
-
Improve the CLI query-protocol-parameters. (#3788)
-
Improved the invariants and the usage of the
Gas
type. (#3792) -
Propagate "std" feature from SDK to wallet crate. (#3795)
-
Improve the logging options for querying MASP conversions. (#3805)
-
When calling init chain, we now verify that the native token alias has masp parameters set. (#3806)
-
Refactored most native VPs to be agnostic to VP environment (WASM or native). (#3807)
-
Adds an SDK and CLI tool to estimate the latest annual staking rewards rate. (#3816)
-
Reduced the number of a tx event's masp attributes to a single one. (#3826)
-
Remove relayer help messages from namada binary. (#3830)
-
Let user customize the pre-genesis chain-id via environment variable (#3833)
-
Validate a chain ID of genesis on ABCI InitChain request prior to applying it to ensure it's not been tampered with. (#3843)
- Clean IBC E2E tests and refine IBC client upgrade test with Gaia (#3601)
- Updated the gaia e2e tests to use the MASP internal address instead of the payment address as the receiver of an IBC shielding transaction. (#3626)
- Augment the functionality of
gen_localnet.py
with the ability to generate full node base directories. Moreover, add a new script to boot up a localnet with two genesis validators or a full node. (#3680)
Namada 0.43.0 is a minor relasing improving shielded sync and addressing some pre-genesis flow issues.
- Fix genesis bonds from implicit accounts. Now, only addresses
of the form
tnam1...
are supported inbalances.toml
. (#3645)
- Partially addresses Issue #2900. Viewing and spending keys can now be given birthdays in the form of block heights which are loaded into shielded sync. Shielded sync will not try to decrypt a block before a keys birthday with said key. (#3653)
- The command
namadan utils test-genesis
now accepts--check-can-sign
multi-arg that can be used with genesis addresses and/or public keys to verify that a pre-genesis wallet in the base directory is able to sign with the keys associated with the addresses or with the keys themselves. (#3660)
- Removed parallel gas accounting. (#3615)
- Improve governance client side validation. (#3629)
- Masp vp and protocol now ensure that a transaction can push at most one MASP action. (#3632)
- Do not load context for
namadan utils test-genesis
command. (#3652) - Speeds up client commands on networks with massive balances.toml files. Previously, to retrieve the native token of some network, we had to parse these giant files. Now, we only parse the necessary genesis toml files required to retrieve the native token. (#3655)
- Parallelize the shielded sync implementation in Namada. (#3578)
- Added fuzz testing targets for txs in mempool, block proposals and finalize block. (#3445)
- Add IBC client upgrade test (#3535)
Namada 0.42.0 is a minor release that includes refactor of crates dependency graph using dependency injection, improvements in client check and node's stability.
- Workaround Windows problems to be able to build on it. (#3553)
- Improve client side checks for update-account transaction. (#3566)
- Do not load shed tower-abci info service. (#3576)
- No-op instead of error in wasm for withdraw txs if no tokens are available to withdraw. Automatically submit reveal pk tx for source for shielding transfers. (#3594)
- Fix the behavior of the MASP VP when processing an IBC Receive message involves unescrowing. (#3611)
- Added support for Ledger wallet TCP transport. (#3593)
- Added two new crates, namada_vm and namada_vp and removed namada crate that contained various loosely related code. Moved the native VP implementations to the relevant crates and replaced their cross-dependencies with dependency- injection. (#3402)
- Replaced cross-system dependencies in namada_shielded_token crate with dependency-injection. (#3466)
- Added a new namada_systems crate to contain abstract systems interfaces, previously added to core crate. Also switched to use the concrete storage error and result type instead of the generic associated type which reduces the amount of typing needed one the caller side. (#3472)
- Replaced cross-system dependencies in namada_governance crate with dependency- injection. (#3482)
- Replaced cross-system dependencies in namada_proof_of_stake crate with dependency-injection. (#3497)
- Decode asset types to addresses when generating test vectors if possible. (#3507)
- Replaced cross-system dependencies in namada_ibc crate with dependency- injection. (#3509)
- Improved tracing messages regarding MASP fee payment. (#3547)
- Updated the gas costs based on benchmarks ran on v41. (#3554)
- Removed unnecessary trait bound from declarations. (#3577)
- Fxing comments and strings. (#3589)
- Improved the
max_block_time
estimate. (#3591) - Refactor signature fetching data. (#3592)
- Do not try to download wasms artifacts from an untrusted source. (#3598)
- Support additional address kinds in
balances.toml
genesis file. Previously, only established addresses and public keys were supported. (#3614) - Display the hash of the proposal wasm code when querying proposals with associated wasm payload. (#3617)
- Enable E2E tests to be run using hardware wallet. (#3570)
Namada 0.41.0 is a minor release that primarily improves gas, fixes bugs related to signature verification and a memory leak from a dependency, and includes shielded sync upgrades.
- Adds SDK builder to shielded and shielding transfers. (#3518)
- Workaround a leak in wasmer store. (#3529)
- Client fixes that include using the correct total voting power to compute a proposal result and also the correct voting threshold for steward proposals. (#3540)
- Fixed a possible panic in transaction signatures verification missing expected signature(s). (#3543)
- Fixed a broken e2e test for db migrations. Added it to the list of e2e test to be run by the CI. (#3481)
- Moved the signature verifications out of the masp vp and into the affected addresses' vps. (#3312)
- Implements phase 1 of Issue #3385
-
When fetching notes, connections and related failures should not halt shielded sync. Instead, the process should be restarted
-
If fetching is interrupted, the data fetched should be persisted locally so that progress isn't lost.
-
A trait for fetching behavior should be added to provide modularity
(#3498)
-
- Improved the interface of the gas type. Removed the duplicated gas used from events. (#3428)
- Implement the phase 2 masp shielded sync client. This client uses
a [
namada-masp-indexer
](https://github.com/anoma/namada-masp- indexer) instance to query the state of the shielded context. (#3456) - Minor improvements to governance and PGF code quality, including template gov proposal jsons and a python script to attach wasm code. (#3471)
- Modified rechecks of process proposal to actually use
process_proposal
instead ofprocess_txs
. Added a caching mechanism to avoid running the check for a given proposed block more than once. (#3473) - Expanded the scope of test vector generation and updated outdated components of the test vector code. (#3494)
- Removes redundant function. (#3502)
- Bump tendermint-rs to 0.37 (#3506)
- Increased the gas cost for storage occupation and tied it to the other gas costs. (#3510)
- Eliminates the MASP VPs requirement for all debited accounts to sign a Tx. (#3516)
- Rename and split --memo-path into --ibc-shielding-data and --ibc-memo (#3517)
Namada 0.40.0 is a minor release that makes many important improvements to shielded actions, DB snapshotting capabilities, batched transactions, and much more.
- Update native token total supply with MASP rewards. (#3375)
- Increase the lifetime of disposable signing keys from 5 minutes to 1 week. (#3378)
- Our
DateTimeUtc
type allowed a relaxed representation of RFC3339 strings. We now enforce a string subset of this format, to guarantee deterministic serialization. (#3389) - Fix to decode ibc-rs transfer messages (#3404)
- Add replay protection to MASP-IBC transactions. (#3409)
- Respect --wasm-dir on init-network. (#3432)
- Fix IBC shielding transfer for the receiver not to be replaced by a malicious relayer (#3438)
- Fixed MASP witness data malleability in the Tx (#3463)
- Fix to extract MASP transaction when IBC shielding transfer (#3488)
- Reworked transparent and masp transfers to allow for multiple sources, targets, tokens and amounts. (#3356)
- Added support for fee payment directly from the MASP pool. (#3393)
-
Moved up the check on the sapling value balance in the masp vp. (#2721)
-
Queries methods now requests
TryInto
trait bound for block heights to reduce the conversion error. (#2891) -
Miscellaneous code optimizations. (#3192)
-
Added a
namada complete
command to generate shell completions. This command requires--shell
with one of:- bash
- elvish
- fish
- powershell
- zsh
- nushell
To use in e.g. bash, run
namada complete --shell bash > /usr/share/bash-completion/completions/namada.bash
. (#3343) -
Remove the
max_expected_time_per_block
genesis parameter. (#3366) -
Refactored checked assign arithmetic operations to use smooth-operator macro. (#3374)
-
Store total MASP rewards and print them in the conversions query. (#3375)
-
Remove the check on the maximum number of signatures allowed per transaction (#3380)
-
Resolves the first two points of Issue #3307:
- Add the ability to create chunkable snapshots to our rocksdb implementation
- Spawn a background task to create snapshots are certain blockheights
Specifically adds a config parameter that indicates after how many blocks a snapshot should be created. If set, then on the corresponding calls to commit, a background task is spun up that takes a snapshot of rocksDB and writes it in a convenient format to a file. This file contains metadata of how to be broken up into chunks. Once a new snapshot is created, older snapshots are removed. (#3383)
-
Addresses the third point and part of the fourth point of Issue #3307
- Adds chunking logic to snapshots
- Implements the
ListSnapshots
ABCI call - Implements the
LoadSnapshotChunk
ABCI call
(#3386)
-
Remove the requirement that the proposal voting period is some integer multiple of the minimum voting period. (#3390)
-
Include the gas scale as a protocol parameter that is mutable via governance rather than as a hard-coded constant. (#3391)
-
Upgrade the library used to communicate with hardware wallet (#3412)
-
Index batched txs via their wrapper and commitment hashes. (#3416)
-
Moved shielded tx validation out of the SDK crate into shielded token crate. (#3419)
-
Enforce an upper limit on the number of PGF stewards allowed to exist at a given time. (#3442)
-
Combined the various Transfer formats into one general one. (#3446)
-
Introduced a local configuration parameter to allow nodes to rerun the process proposal checks before block finalization. (#3448)
- Adds additional test coverage to batch tx events emission, to make sure we correctly build a batch of inner tx events from a batched tx. (#3401)
- Change the IBC E2E testing config (#3455)
Namada 0.39.0 is a minor release that primarily abstracts the different kinds of transfer transactions and makes upgrades to the MASP and VPs.
- Fixes an issue with unsanitized input to a PoS query to find a validator by TM address which may cause a node to panic. (#3340)
- Fix to clear the write log when dry-run batched transaction (#3358)
- The transfer command has been split into:
transfer
(shielded transfer)transparent-transfer
shield
(from transparent to shielded)unshield
(from shielded to transparent) (#3297)
- Avoid growing wasm memory when performing read-only accesses. (#3315)
- Added a separate epoch tracker for masp to decouple its logic from the rest of the protocol. (#3318)
- Default to the address from local config when the
--node
argument is not specified forshielded-sync
command (#3333) - Allow NAM transfers for protocol actions. (#3348)
- Select gas payer from implicit address in the Namada CLI. (#3349)
- Remove old disposable keys from the wallet. (#3350)
- Addressed some minor issues in the shielded token code. (#3351)
Namada 0.38.1 is a patch release that fixes a license issue with the last minor release needed to build binaries in CI.
Namada 0.38.0 is a minor release that upgrades the MASP and events and also cleans up dependencies.
- Fixed the fee collection logic in
finalize_block
to match that ofprocess_proposal
. (#3075)
- Improved masp vp verification to run in parallel. (#2972)
- Removed any dependency on the specific transaction data from the masp vp. (#3232)
- Add a new event attribute facility to track events to their origin in Namada's source code. This is useful for debugging purposes. (#3268)
- Include the used MASP randomness parameters in the test vectors. (#3296)
- Replaced unmaintained config-rs to an unreleased version that replaces its also unmaintained yaml dependency. (#3305)
- Upgrade
wasmer
vm to upstream version4.3.1
, moving away from the forked code based on version2.3.0
. (#3308) - Allow nodes to schedule a migrations json to be read and run to facilitate hard-forking. This is done by taking a migrations json and passing the path, a hash of the contents, and a block height to the node when starting the ledger. (#3310)
- Store IBC denom when minting the IBC token (#3317)
- Switched from wee allocator to rlsf for WASM. (#3331)
Namada 0.37.0 is a minor release that adds replay protection entries to consensus and enables merklizing data without diffs.
- Enable to write data to be updated in the subspace and Merkle tree, but not to be updated in diffs (#3293)
- Revert IBC transaction wasm not to use host_env function. But it required to enable floating-point support again (#1831)
- Audit TODOs in the codebase. (#3234)
- Replay protection entries need to be verifiable and thus should contribute to the app hash. This PR makes a cryptographic commitment to all replay protection entries (the root of some implicit merkle tree) which is itself merklized. (#3284)
Namada 0.36.1 is a patch release that updates the Rust toolchain to 1.78.0 fixes a couple minor issues with the last minor release.
- Switch off the "mainnet" feature by default for now. (#3287)
- Updated Rust toolchain to v1.78.0. (#3254)
Namada 0.36.0 is a minor release includes various improvements, refactorings, dependencies clear-up and updates, and a new feature that enables to batch transactions.
- Light SDK objects must be clone-able. (#2817)
- Harden the implementation of
BorshDeserialize
onProposalBytes
. Moreover, avoid using magic numbers when configuring CometBFT. (#3220) - Default to consensus minimum gas price for some token when the node-local value set by a validator is lower. (#3228)
- Do not submit a tx to reveal a PK when
--force
flag is used with a transaction. (#3245)
- Introduced transaction batches. (#1356)
- Upgrade docker base images to Debian 12 (Bookworm) (#2975).
- Make the internals of ValueSum (in the masp crate) private so we know that invariants of representation are maintained. (#3195)
- Clean up init/join network CLI commands and the
gen_localnet.py
script. (#3196) - Disallow use of floats in WASM. (#3209)
- Sanitized unchecked arithmetics and conversions in the codebase. (#3214)
- Removed fee unshielding from wrapper transactions. (#3217)
- Dependency cleanup: remove unused ones, upgrade those with security vulnerabilities, reduce the number of transitive deps. (#3218)
- Bump tendermint-rs, tower-abci and ibc-rs (#3225)
- Extends claps Arg and Command types with namada traits. These add configurable line wrapping and hyphenation policies. Also sets help to always be on the next line, but this is easily changeable later. (#3226)
- Removed the remaining references to ferveo. (#3241)
- Lint for left-over debug and print statements. (#3257)
- Remove unused WASM memory export. (#3258)
- Separated the apps library code from binaries code into a new crate
namada_apps_lib
. (#3259) - Updated the masp vp to accept multiple transfers in a single transaction. (#3264)
- Separated the node library code from other apps lib code into a new crate
namada_node
. (#3265) - Refactor wasm host references code. (#3273)
- Emit CLI warning log msg on non 64-bit node hardware. (#3215)
- Update tower-abci to fix windows build. (#3216)
Namada 0.35.1 is a patch release that fixes a couple build issues with the last minor release.
Namada 0.35.0 is a minor release that refactors events, widely implements checked arithmetics, refactors balances, and makes various other improvements across MASP and other crates needed for mainnet readiness.`
- Resolved the frozen IBC client issue by updating ibc-rs to 0.52 (#3011)
- Set the height for abci_query response (#3065)
- Wasm transactions are now governable via proposals. (#3100)
- Verify the checksum of dowloaded wasm artifacts, before completing the ledger's bootup procedure. (#3119)
- Fixed a race condition in pre-compiled WASM cache. (#3181)
- Removed the MASP pin key. (#2675)
- Refactor CliToSdk to propagate errors from fallible conversions (#2832)
- Remove the epoch field from the wrapper tx. (#2946)
- Refactor and modularize the token balance and supply API. (#3029)
- Prohibit unchecked arithmetics and conversions in the core crate. (#3074)
- Emit core events (i.e.
namada_core::event::Event
) from tx wasms. (#3088) - Move event types to their appropriate crates. (#3102)
- Refactor governance events. (#3104)
- Emit balance change events for various protocol actions. (#3141)
- Client improvements related to valid thresholds for mutlisig accounts and PGF steward submissions. (#3154)
- Remove unbounded
token
andowner
balance queries from the CLI, in an attempt to reduce strain on the RPC servers of full/validator nodes. (#3171) - Removed the unused
delta_map
from the shielded context. (#3172)
- Improve vote proposal logic transaction. (#3120)
- Add IBC E2E test with Gaia (#2232)
Namada 0.34.0 is a minor release that makes many different improvements to the protocol, transaction format, and user experience essential for the mainnet candidate software.
- Fixed a bug in the masp vp that allowed a shielding transaction to reveal nullifiers. (#2621)
- Fix dry-run for ibc-transfer by checking previous header's time (#2730)
- Checks that a MASP key was changed when identifying a MASP tx (#2684)
- Fix the denomination for PGF over IBC to use the one of the token (#3085)
- Ensure that date-time generator conforms to RFC 3339. (#3130)
- Removed block hash and all the associated functions that were using it. (#3136)
- Update the PoS state machine test to include validator deactivation and reactivation transitions. (#2605)
- Fee unshielding now charges gas fees. (#2619)
- Refactors
GasLimit
and removes unused methods and constants. (#2620) - Previously on startup, the merkle root persisted was trusted to agree with the persisted db. Now a flag can be see to remerkelize storage and check against the saved root. (#2778)
- Adds masp commitment tree anchor keys to the merkle tree. (#2794)
- After auditing the abci++ shims, found some small cleanups. (#2861)
- Borsh serialize all values except for IBC-related data written to storage (#2868)
- Refactoring rocksdb.rs (#2938)
- Simplified the replay protection implementation. Improved tests. (#2956)
- Set a shared gas limit default value for both the client and the SDK. Removed the default implementation of gas limit. (#2981)
- Various small changes to client and logging, largely related to PoS. (#3031)
- Optimize the finding of validators to which a delegator has bonds at a given epoch. Now keeps data in storage rather than iterating over all bonds. (#3043)
- Fixes various dynamics of the execution of governance proposals and their voting period. (#3087)
- Adds the validator established account address to the wallet upon join-network or post-genesis validator initialization. (#3093)
- Add max allowed latency between the current epoch and a proposal start epoch to genesis params. (#3107)
- Use token functions from the token crate inside the tx_prelude. (#3109)
- Separate the temporary key-values in write-log to simplify the implementation. (#3110)
- Improve a client error message (#3116)
- Adjusted hardware wallet test vectors to simplify hardware wallet app (#3122)
- Set a default expiration for transactions when no value is provided. (#3123)
Namada 0.33.0 is a minor release that contains various new features, improvements and bug-fixes.
- Fix the setting of the last update field in an Epoched data structure. (#2667)
- Use
indexmap
maps and sets in favor ofstd
collections, to avoid iteration order related bugs in the state machine code of Namada. (#2685) - Fixed the
StorageRead
implementation and vp host functions to ignore temporary writes. (#2735) - Fix the balance query not to show ibc tokens as default (#2809)
- Adjusts the tx allowlist check to not prevent fee payment. (#2819)
- Reduce the gas cost of prefix iterator in IBC transactions to match the cost of prefix iterator elsewhere. (#2848)
- Fix client bug that now ensures that a validator with delegations but no self-bonds can vote in governance. (#2877)
- Only use addresses from first storage key segments to determine which VPs should be triggered by storage changes. (#2928)
- Replaced DB key-val diffs pruning of non-persisted keys that searched for the last diffs and was degrading throughput with a separate DB column family that is pruned on every block. (#2964)
- Support NFT transfer over IBC (#2316)
- IBC rate limit for deposits into and withdrawals out of Namada (#2552)
- Add ibc-token command to get a list of IBC tokens (#2729)
- Removes offline governance as a proposal option. (#2803)
- Add a parameter to enable/disable native token transfers (#2842)
- Added a utility to generate Borsh schemas for external collaborators. (#2931)
- Prohibit jailed or inactive validators from voting in governance. (#3004)
- IBC shielded transfer with Hermes support (#2449)
- Remove last staked ratio and pos inflation amount from Parameters and initialize them in pos genesis initialization. (#2559)
- Only process 1 slash per validator per block height. (#2574)
- Refactor inflation with a standalone PD controller module. Then the PoS and shielded inflation modules are wrappers around this controller. (#2575)
- Instead of having every user tx be executed across two blocks, the first executing a wrapper and the second executing the main payload, this change makes it so that the entire tx is executed in a single block (or rejected). (#2627)
- Only load governance proposals on a new epoch right before execution. Decoupled the logic from the Shell and implemented in the gov crate. (#2630)
- Adds a transaction's code and data section hashes as additional sources of entropy, to compute an established account's address. (#2781)
- Refactor the events code in Namada. Now, we emit events with type safe wrappers around the events' attributes. (#2787)
- Split up WASM transaction and validity-predicates into individual crates to improve build time. (#2795)
- Avoid reconstructing wasm result buffer with unsafe code. (#2813)
- Improved the gas metering system to track gas at runtime in wasm. (#2838)
- Limit the character length of the validator metadata strings. (#2845)
- Use clippy to disallow usage of fns to get current date/time unless explicitly allowed. (#2849)
- Replace
eyre!()
errors withnamada_storage
errors. (#2852) - Commit gas costs of applied transactions to new commit-only merkle tree store. (#2926)
- Remove unnecessary decimal digits in Ledger test vectors. (#2932) This PR moves many e2e tests over to integration test. In the future, it may be possible to move more tests over. Moving some of these tests over revealed issues and these have also been resolved, including #2927. (#2933)
- Some transactions now use temporary storage (only kept for the duration of the tx execution and VPs validation) to indicate what actions were applied to validity predicates that use the information to decide who has to authorize the transaction. (#2934)
- Change the return type of a VP's predicate function to a Result of unit or some error. In case Namada users perform invalid state changes, they should be met with more descriptive error messages explaining the cause of their tx's rejection. (#2940)
- Return error messages from tx execution, instead of aborting execution with no context. (#2958)
- Simplified gas metering for code compilation and validation. (#2982)
- For inflation computations and the relevant RPC, don't include the PGF balance in the total native supply (#3002)
- Erase protocol specific details from the core API of events in Namada. (#3032)
- Disable Ethereum Bridge functionality at compile time. (#2602)
- move query_ibc_tokens and lookup_ibc_token_alias to sdk (#2729)
- Add a new method to the sdk to change a validator consensus key. (#3037)
- Improve the function to update an enstablished address via the sdk. (#3039)
- Improved unit tests for fee payment. (#2914)
Namada 0.32.1 is a patch release that permits state migration features in release builds.
Namada 0.32.0 is a minor release that adds state migration capabilities, fixes the user VP, refactors the shielded token ConversionState, fixes the rollback, and includes various other minor improvements.
- Fixes the rollback command to correctly restore replay protection keys. (#2599)
- Fix a bug preventing unjailing when it involves demotion of a validator out of the consensus set. (#2617)
- Fixes the computation of the valid validator voting period. (#2628)
- Clear IBC events emitted from rejected txs. (#2850)
- Enable to update ConversionState token map by proposal wasm tx (#2601)
- Implements state migration functionality. (#2870)
- In PoS VP validate governance proposal changes in PoS parameters. (#2604)
- This PR adds a proc macro that registers the deserializer of a type in a hashmap. This allows us to verify that data blob deserializes correctly if we are in possession of the hash map key. (#2814)
- Adds tools to create json files to change db keys and various debugging and dry running logic. (#2835)
- When iterating over key prefixes, we can additionally filter out keys based on a regex. (#2839)
- Some edits to logging and strings (#2894)
- Added an optional starting block argument for shielded sync (#2902)
Namada 0.31.9 is a patch release that includes a fix of IBC timestamp, transaction gas cost and shielded context for dry-ran transactions and RocksDB update.
- Fix the timeout timestamp for PGF over IBC (#2774)
- Fixed a bug in the client for which the speculative shielded context was updated event in a dry run. (#2775)
- Restore the IBC tx gas cost to match the version 0.31.6. (#2824)
- Improve build time of git2 dependency by disabling the default features. (#2724)
- Various client improvements. (#2748)
- Updated RocksDB dependency. For a shared libary users make sure to link against version v8.10.0. (#2776)
gen_shielded_transfer
now takes an extraupdate_ctx
argument to conditionally update the shielded context. (#2775)
- Fix E2E test for PGF over IBC (#2765)
Namada 0.31.8 is a patch release that prevents issues with incompatible WASM compilation cache and other minor issues.
- Downgrade nightly toolchain to
2024-02-10
. (#2761)
- Added WASM cache versioning to avoid issues on updates that don't have compatible binary format. (#2757)
- Make more MASP types public. (#2762)
Namada 0.31.7 is a patch release that contains code refactors, various fixes and improvements.
- Fix ibc-gen-shielded for shielded transfers back to the origin (#2634)
- Fixed the default
--node
argument when no specified. (#2701) - Bail from router if a nester router segment is not matched. (#2739)
- Refactored sub-systems integration in the ABCI FinalizeBlock request handler. (#2482)
- Refactored token crates. (#2493)
- Refactored core crate to flatten the modules structure. (#2503)
- Refactored governance crate dependencies. (#2506)
- Hid addresses used for testing from public API. (#2507)
- Expanded the variety of test vectors generated for hardware wallets and simplified their format in some places. (#2588)
- Refactored the state crate. (#2606)
- Add slashed bonds/unbonds info to the client. (#2670)
- Moving to rust version 1.76.0 (#2687)
- Implemented mock transaction prover and verifier for faster testing and lower development time. (#2695)
Namada 0.31.6 is a patch release that contains various fixes and improvements.
- Fix shielded balance query for IBC tokens (#2625)
- Rather than allowing CometBFT to keep processing blocks after a storage write has failed in Namada, crash the ledger to avoid any potential corruption of state. (#2657)
- Fixing the order of proposal execution to be deterministic. (#2679)
- Added wallet command to "convert" a consensus key into Tendermint private validator key JSON format. (#2516)
- Simplified the transaction fetching algorithm to enable it to be saved to storage more frequently. (#2458)
- The client, when generating a shielded transfer, invalidates the masp notes that have been spent without the need to sync with a node. (#2534)
- CLI: Allow to use global args (
--chain-id
,--base-dir
,--wasm-dir
and--pre-genesis
) before or after a sub-command. (#2545) - Show help message for query-proposal subcommand instead of crashing when no arg provided. (#2611)
- Various improvements to client and error logging. (#2615)
- Allow users to input http/https url as ledger urls. (#2658)
- Increase broadcaster timeout and allow users to increase it via environment variable. (#2668)
- Reworked the sdk to support the new speculative state of the
ShieldedContext
:\n-ShieldedContext
now has an extra field to determin its state\n-When callinggen_shielded_transfer
the context now invalidates the spent notes (if any)\n-The fee unshieldingTransaction
is now built before the actual transaction\n-find_viewing_key
only requires a shared reference now (#2534)
Namada 0.31.5 is a patch release that fixes consensus validator set update for CometBFT.
- Fixed a bug in the communication of validator set updates to CometBFT after a change of validator consensus key that occurs at the same epoch as a validator entering the consensus set. (#2653)
Namada 0.31.4 is a patch release that fixes the result query of an active governance proposal.
- Fixes the query-proposal-result output in the case that a proposal is still voting. (#2573)
Namada 0.31.3 is a patch release that fixes various issues.
- Fix PoS bonds and unbonds query to return delegations when only a validator address is specified. (#2522)
- PoS: fixed the order of iteration when slashing validators for liveness. (#2577)
- Reject validator set updates signing over a superset of the next validator set. (#2578)
- Governance tallying for delegators now works. (#2579)
- Adds some useful internal addresses, such as PoS, to the wallet upon join- network. (#2543)
- Fixes query-protocol-parameters to include some missing PoS data and a better- formatted output. (#2558)
Namada 0.31.2 is a patch release that fixes an issue with request ordering introduced in 0.31.1.
- ABCI calls must be executed synchronously. (#2547)
- Added a client command "status" to query a node's status. (#2511)
Namada 0.31.1 is a patch release that fixes the memo processing for some transactions and improves logs related to ledger startup and the wallet.
- Wallet: respect the optional bip39-flag for key derivation. (#2489)
- Wallet: print the generated payment address. (#2490)
- Reworks the way the ledger waits for genesis start. It now fully initializes the node and outputs logs before sleeping until genesis start time. Previously it would not start any processes until genesis times, giving no feedback to users until genesis time was reached. (#2502)
Namada 0.31.0 is a minor release that fixes wasm host function execution and upgrades some CLI functions and the Masp VP.
- Use the configured native token for genesis validation. (#2471)
- Wallet: handle the case when empty decryption password is provided. (#2473)
- Avoid panic in host env functions (#2478)
- Removed possible over/under-flow of
I128Sum
operations in the masp vp. (#2476)
Namada 0.30.3 is a patch release that refactors some MASP functionality and fixes some governance and CLI issues.
- Fixing several bugs in how governance and pgf transactions are handled and validated. (#2459)
- Modified the MASP VP to validate the changed storage keys instead of the
Transfer
object. (#2452) - MASP inflation for a given token now is adjusted based on a target amount of total locked (shielded) tokens rather than a ratio relative to some total supply. (#2460)
- Add an address CLI arg that defaults to the native token. (#2467)
- Modified
scan_tx
to require the set of changed keys instead ofTransfer
.fetch_shielded_transfer
now returns the set of changed keys instead ofTransfer
. (#2452)
Namada 0.30.2 is a patch release that contains various bug fixes and improvements.
- Fixed possible panics in transaction host environment functions. (#2401)
- Fix the token burn function. (#2408)
- Improving code around governance tally computations. (#2415)
- Fix the MASP VP to enable changes to the shielded set max reward rate for a token. (#2424)
- Validates changes to the balance key in masp vp. (#2428)
- Restrict the reward distribution of a steward to a maximum of 100. (#2440)
- Avoid diff overflow in Multitoken VP (#2443)
- Restricted RPC router paths to ASCII characters to prevent crashes. (#2447)
- Implemented ZIP32 functionality for shielded pool keys. (#2417)
- Added tx WASM code allowlist at protocol level and VP WASM code allowlist in the host environment functions. (#2419)
- The test vector generator now supports generating MASP transactions. (#2427)
- Disabled RocksDB jemalloc feature by default for non-release builds. (#2404)
- Skip writing some MASP and IBC storage keys to merkle tree and DB diffs. (#2438)
- BIP39 passphrase made optional. (#2442)
- Both the
reading
andwriting
modules of the light SDK can now be used from within an async runtime. (#2399)
- Added an integration test to verify that unconverted asset types can be spent in the MASP. (#2406)
Namada 0.30.1 is a patch release that contains various bug fixes for MASP, IBC, the shell and crates refactor (the core has been subdivided into many smaller crates).
- Refactored the core crate into many smaller crates. (#2312)
- Strengthened the checks in the MASP VP. Allow viewing and spending of unconvertible MASP notes (#2371)
- Refactored the fee validation process. (#2382)
- Updated block validation to require a valid timestamp. (#2383)
- Moved Rust crates into a crates sub-dir. (#2386)
- Ibc transactions can be rewrapped in case of a gas error. (#2395)
- Added some more RPC methods for computing governance proposal results, query pgf parameters and total supply of a token. (#2400)
- Fix E2E test for PGF over IBC by waiting before checking the balance (#2398)
Namada 0.30.0 is a minor release that primarily upgrades the MASP and WASM VM memory functionality in addition to smaller upgrades to other Namada modules.
- Suppress querying errors when a user has no token balance (#1910)
- Fix alignment errors on wasmer that cause the ledger to crash. (#2384)
- Sanitize wasm memory accesses which are outside of the 32-bit address range, to avoid crashing the ledger while executing malicious wasm payloads. (#2385)
- PGF over IBC (#1395)
- Adds a new
query_proposal_votes
query, improves the formatting ofProposalResult
and returns early in client if governance voter has no stake. Misc refactors. (#2330) - Removes panics from masp vp. Refactors masp storage keys generation. (#2345)
- Introduce a memo field, to allow including arbitrary data inside of transactions. (#2358)
- Include validator avatar url in their medatada (#2359)
- Removed masp data from storage. Updated the client to query the cometBFT rpc endpoints. (#2363)
- When constructing a governance proposal the id is now a required field. (#2365)
- Added validator's consensus key look-up to
client find-validator
command, which now also accepts a native validator address. (#2368) - Fix the function
bond_amount
to more accurately account for slashes. (#2374) - The MASP VP now validates the tx expiration. (#2375)
- Removed the hardcoded sentinel key of MASP. (#2376)
- Improved governance variable names and code reuse. (#2377)
- Added
QueryProposalVotes
struct. RemovesVoteType
from theDisplay
implementation ofLedgerProposalVote
. Updatesbuild_vote_proposal
to return an error if voter has no delegations. (#2330) - Refactors MASP keys construction. (#2345)
- Add optional memo field to transaction args. (#2358)
- Modified
ShieldedContext
to useIndexedTx
to track the last indexed masp tx. Updatedfetch_shielded_transfer
andcompute_pinned_balance
to query the cometBFT rpc endpoints to retrieve masp data. Updatedblock_search
to accept a fallible cast toHeight
. (#2363) - Cleaned up the unused ibc dependency of the light sdk crate. (#2372)
tx_signers
returns no signing key when the source of a transaction is MASP. (#2376)
- Add IBC E2E test with Hermes (#773)
Namada 0.29.0 is a minor release that introduces the light SDK, upgrades the MASP and CLI, and includes other fixes and refactors of the PoS, IBC, and Ethereum Birdge modules.
- Prevents double-spending in masp by adding a nullifier set. (#2240)
- Updates masp tx to store the notes and the native vp to validate them and the anchors. (#2244)
- Updates the masp vp to validate the convert description's anchor. (#2248)
- Client: Check that transaction is successful before taking further actions. (#2279)
- Non-Namada token can be given to ibc-gen-shielded (#2308)
- Make the ledger wait for genesis before starting up any processes (#2310)
- A new client command has been added that takes a set of pre-genesis template files, validates them, and runs them through init_chain. All errors are collected into a report. (#2255)
- The wallet CLI structure has been significantly reworked and simplified. Alias argument is now obligatory for key generation / derivation commands. Feature of raw (non-HD) key generation has been restored, which was removed in the previous release. Key export / import functionality for both transparent and shielded key kinds has been implemented. Additionally, several other improvements have been made. (#2260)
- IBC transfer from a spending key (#2321)
- Emit Bridge pool transfer status update events from FinalizeBlock (#1995)
- Refactored module dealing with Tendermint configuration. (#2127)
- The default implicit and established user account VPs now require valid signature(s) for unknown storage changes. (#2213)
- Allowed the unshielding of previous epochs assets from the masp. (#2222)
- Fee amounts in transaction wrappers are now denominated to facilitate hardware wallet support. (#2245)
- Refactor the PoS crate by breaking up the lib and tests code into smaller files. (#2253)
- Made test vector generation easier and reduced the difficulty of maintaining the generation code. (#2259)
- Client: Improved output of transaction results. (#2276)
- Enhances the speed of two PoS tests that run particularly longer than others in CI. (#2277)
- Removed useless epoch for fee unshielding and refactored tests. (#2282)
- Refactor internal structure of the Ethereum bridge crate (#2288)
- Move Ethereum bridge transaction code from
apps
to theethereum_bridge
crate. (#2289) - Move the pos inflation gain parameters to the PosParams. (#2294)
- Move the inflation code for PoS and PGF into their own native modules. (#2295)
- Improved validation on transaction's expiration. Added an expiration for MASP transfers. (#2315)
- Previously, a hardcoded set of tokens were expected to be used in Masp conversions. If these tokens did not have configs in genesis, this would lead to a panic after the first epoch change. This PR fixes this to use the tokens found in genesis belonging to the MASP rewards whitelist instead of hardcoding the tokens. (#2285)
- Introduce a method to query the status (pending, relayed or expired) of Bridge pool transfers (#1995)
- Added light sdk (#2220)
- Improved the TxResponse type. (#2276)
- Removed useless epoch for fee unshielding. (#2282)
- ibc-gen-shielded can set non-Namada token (#2308)
- Updated
gen_shielded_transfer
to attach a sensible expiration to a MASPTransaction
. (#2315) - ibc-transfer can set a spending key to the source (#2321)
- Added e2e test for change-consensus-key command. (#2218)
Namada 0.28.2 is a patch release that fixes a stack overflow issue for nodes.
- Fixed DB prefix iterators to avoid iterators with key that don't match the given prefix, which was triggering recursive call that was growing stack with every new applied tx and on reading state from disk on start-up. Replaced recursion from RocksDB that was growing stack size with a loop. (#2325)
Namada 0.28.1 is a patch release that makes improvements to the MASP, SDK, merkle trees, and chain initialization conditions.
- Fix sdk compilation when using async-send feature flag. (#2261)
- Added back missing changed storage keys in transaction results. (#2263)
- Fix to skip pruning BridgePool Merkle trees when no signed nonce (#2264)
- Initialize token total supply to zero at init chain. (#2270)
- Preload and cache MASP verifying keys on ledger start-up. (#2272)
- Now join-network will try to look for non validator wallet in more places. (#2273)
Namada 0.28.0 is a minor release that improves the genesis setup to allow signing with hardware wallet and contains various improvements including validator liveness jailing, accounts simplifications, bug fixes, stability improvements and more.
- Fix the start block height of the first epoch. (#1993)
- Fix Ethereum event validation/state updates when more than one validator is running the chain (#2035)
- Fix possible underflow in MASP rewards calculation. (#2230)
Allow the ethereum oracle to be activated / deactivated via config updates sent from ledger. This allows governance to shut down the ledger without restarts. Otherwise, disconnecting from Ethereum will result in the ledger crashing. (#1764)
- Prune merkle tree of bridge pool (#2110)
- Revert the chain ID format by upgrading ibc-rs to 0.48.1 (#2153)
- Changed pre-genesis established addresses to be derived from their data. Improved signing of pre-genesis transactions to use the same format as regular transactions. Genesis token balances now can be directly assigned to established addresses. (#2186)
- Combined the user and the validator VP into one. (#2202)
- Charge gas for network usage. (#2205)
- A new
tx_become_validator
replacestx_init_validator
. This tx doesn't initialize a new account and instead it modifies an existing established address to become a validator. This currently requires that there are no delegations on the source account before it can become a validator (if there are some, they have to be unbonded, but they don't have to be withdrawn). A new client commandbecome-validator
is added that requires an--address
. The client commandinit-validator
is kept for convenience and updated to sendtx_init_account
tx beforetx_become_validator
. (#2208) - Increase hardware wallet support in the CLI (#2209)
- Handle errors on loading WASMs from file-system compilation cache. (#2215)
- Implement a CLI query for available rewards from a bond, and improve the bond amount for rewards computation (#2217)
- Fix bug in client to allow for unjailing a validator that was jailed for missing liveness requirements (#2246)
- Upgraded borsh dependency to v1.2.0. (#2233)
- Removed uses of lifetimes in the SDKs Namada trait and implementation (#2225)
- Added Send trait support to the SDK to allow its use in more multithreaded contexts. (#2235)
Namada 0.27.0 is a minor release that incorporates the remaining essential proof-of-stake features, updates the MASP and transaction functionality, and provides some additions to the SDK.
- Fix a feature flag to compile namada_sdk (#2164)
- Fix to get the proof even if no height is specified (#2166)
- Fix ABCI queries at the last committed height (#2184)
- Tx that allows a validator to change its consensus key (#2137)
- Moved the masp vp to native. (#2051)
- Tighten security around potential P2P issues (#2131)
- Print more context from eyre error types. (#2132)
- Require to verify ownership of all validator keys when initialized on-chain. (#2163)
- Improve the validator VP to ensure that only the validator themself can execute transactions that manipulate its own validator data (#2169)
- Various improvements to the PoS code, including adding a panic on a slashing failure, some more checked arithmetics, aesthetic code cleanup, and fixing a bug in is_delegator. (#2178)
- Added type tags to transactions to enable hardware wallets to fully decode transactions even after minor Namada updates. (#2182)
- Save MASP conversion state to the state storage instead of the diffs (#2189)
- Removed catching of panics from PoS VP. (#2145)
- Masp as internal address. Updated
aux_signing_data
to return no key and 0 threshold if owner is masp. (#2051) - A high level function new_redelegate is added to the sdk to allow developers to make and submit redelegation functions from the minimum number of arguments required (#2140)
Namada 0.26.0 is a minor release on the way to mainnet with updates to PoS and governance as well as its upstream dependencies.
- Fix Windows build by disabling RocksDB jemalloc feature. (#2100)
- Fix balance query not to return duplicate results (#2125)
- Fixed bugs in the governance VP and in the PGF inflation mechanism. (#2133)
- Added handling of ABCI Info requests load-shedding and removed load-shedding from Mempool requests. (#2152)
- Implements a claim-based rewards system for PoS inflation. (#1992)
- Store validator metadata on-chain (#2045)
- Add transactions to deactivate and reactivate a validator (#2082)
- Added Ledger support to the CLI client. (#2118)
- Added the option to abstain from voting a governance proposal. (#2128)
- Improved replay protection for invalid transactions. (#1905)
- store only essential merkle tree snapshots (#2043)
- Replace strings with a specialized IBC token hash type in addresses (#2046)
- Switch to a more compact representation in Namada's transparent addresses, and change all bech32m HRPs to their mainnet equivalent (#2060)
- refactoring IBC and remove IBC token denomination (#2062)
- Upgraded to upstream ibc-rs and tendermint-rs crates. (#2084)
- Updated the gas costs. Introduced a local validator configuration parameter to set the accepted tokens and amounts for fees. (#2091)
- Moved the inner transaction replay check at execution time. (#2104)
- Removed "abcipp" and "abciplus" features and "abcipp"-only code. (#2112)
- Removed the DKG implementation with its ferveo dependency. (#2115)
- Upgraded to upstream tower-abci version. (#2141)
- Updated the
LedgerProposalVote
display method to account for the newAbstain
vote variant. (#2128)
This release includes only the new genesis flow.
- Added bech32m string encoding for
common::PublicKey
andDkgPublicKey
. (#2088) - Added
--pre-genesis
argument to the wallet commands to allow to generate keys, implicit addresses and shielded keys without having a chain setup. If no chain is setup yet (i.e. there's no base-dir or it's empty), the wallet defaults to use the pre-genesis wallet even without the--pre-genesis
flag. The pre-genesis wallet is located inside base-dir inpre-genesis/wallet.toml
. (#2088) - Reworked the genesis templates, setup and related utils commands. (#2088)
Namada 0.24.1 is a patch release addressing ledger startup problems with wasm artifacts and several other minor fixes.
- Fix Windows build by disabling RocksDB jemalloc feature. (#2047)
- Define the wasm download endpoint via environment variable. (#2064)
Namada 0.24.0 is a minor release that introduces an SDK crate, PoS redelegation, various updates and fixes for IBC, PoS, governance, ETH bridge and the ledger.
- Reintroduced a dummy field in order to achieve compatibility with hardware wallet. (#1949)
- Fix broadcasting logic for protocol txs when a node operating the network is a validator (#1964)
- Avoid redundant storage deletions in lazy collections that would incur extra gas cause and appear in transaction result as changed keys even if not changed occurred. This may have caused PoS transactions to run out of gas. (#1984)
- Update ibc-rs with the fix for ibc-rs/#911 (#1989)
- Fixed the pgf stewards reward to be constant regardless of the number of stewards. (#1999)
- Reworked the signature of inner transactions to improve safety and fix replay protection. (#1867)
- Updated the generation of hardware wallet test vectors to cover current codebase (#1888)
- IBC transfer to a payment address (#1917)
- Migrate to upstream borsh (#1930)
- Improve the Epoched data structure's bookkeeping of past epochs, now parameterizable by PoS and governance params. (#1943)
- New implementation and parameters for purging old epochs for Epoched validator data in storage. (#1944)
- Query also IBC token balances (#1946)
- Increased resoultion of gas accounting for signature verification. (#1954)
- Refactor benchmarks to avoid enabling
"testing
" and `"dev"`` features by default in the workspace. (#1955) - Add missing checks for the commission rate change tx and code clean-up (#1973)
- Reduced the storage consumption of replay protection. (#1977)
- Persist the results of governance proposals in storage to allow recovering old results. (#1979)
- MASP rewards are now distributed in the manner dictated by the PD-controller (#1985)
- Wait for a node to sync before broadcasting protocol txs (#2001)
- Sign transactions originating from the Namada relayer that are sent to Ethereum (#2012)
- Phase out Halt abstractions (#1953)
- Validate Bridge pool transfers before submitting them to the network (#1957)
- Improved the usability of the SDK and moved it to separate crate. (#1963)
- Now re-exporting crates that will commonly be used with the SDK. (#2033)
- Mock ledger services in integration tests (#1976)
Namada 0.23.1 is a patch release fixing a potential ledger crash on the pgf module.
- Fixed a bug that would cause the ledger to crash on a failed PGF payment. (#1991)
Namada is a minor release that improves the ethereum bridge, the IBC mechanism, and fixes some general protocol bugs.
- Fixed a bug in the parallel gas accounting of validity predicates. (#1835)
- Removed gas and fees related panics from the sdk. (#1878)
- Fix lower bound in client proposal vote check (#1887)
- Respect force option for proposal vote transaction (#1889)
- Never overwrite recent Bridge pool proofs in storage (#1893)
- Keep a record of the first block heights of every epoch in the chain's history instead of trimming to only keep this data for a certain number of epochs in the past. (#1898)
- Added wasm validation in
init_chain
and in client utils. (#1902) - Implement IBC tx execution via a native host function to workaround Mac M1/2 WASM compilation issues. (#1904)
- Replaced standard IO in SDK and client code with a trait that allows custom handling. (#1746)
- Rework voting on Ethereum tallies across epoch boundaries (#1865)
- Move all functions considered to be apart of the SDK to the SDK folder. (#1868)
- Remove pay-fee-with-pow feature and faucet vp. (#1873)
- Removed redundant
WasmPayload
enum in favor ofCommitment
. (#1874) - Added a section in CONTRIBUTING.md to outline how to document SDK changes (#1876)
- Refactored retrieval of
Transaction
object for fee unshielding. (#1877) - Renamed
gas_cost
tominimum_gas_price
in the genesis file. (#1882) - Enable hardware wallets to participate in nondegenerate multisignature transactions. (#1884)
- Added support for validators' hostnames in configuration. (#1886)
- Allow Bridge pool transfers to pay zero gas fees (#1892)
- Forced the
async_trait
s' futures in the SDK to beSend
. (#1894) - Retransmit timed out Ethereum events in case they have accumulated >1/3 voting power (#1899)
- Move the IBC native VP to a different module (#1927)
- Migrate to the new Ethereum contracts (#1885)
- The shared-utils topic (#1868) moves the following:
-
Modules
From To namada::ledger::tx namada::sdk::tx namada::ledger::rpc namada::sdk::rpc namada::ledger::signing namada::sdk::signing namada::ledger::masp namada::sdk::masp namada::ledger::args namada::sdk::args namada::ledger::wallet::alias namada::sdk::wallet::alias namada::ledger::wallet::derivation_path namada::sdk::wallet::derivation_path namada::ledger::wallet::keys namada::sdk::wallet::keys namada::ledger::wallet::pre_genesis namada::sdk::wallet::pre_genesis namada::ledger::wallet::store namada::sdk::wallet::store namada::types::error namada::sdk::error -
Types
From To namada::ledger::queires::Client namada::sdk::queires::Client
-
- Added two new variants to the
TxError
enum,BalanceToLowForFees
andFeeUnshieldingError
, representing possible failures in transactions' fees. (#1878) - Added the
Send
bound to theClient
andShieldedUtils
async_trait
s'. This allows the SDK to be used in environments which are both asynchronous and multithread. (#1894)
- Updated benchmarks and added tests to ensure they're working. (#1907)
Namada 0.22.0 is a minor release introducing a redefined PGF mechanism, a proper gas module, and major improvements to the sdk and ethereum bridge.
- Fix IBC amount handling (#1744)
- Fix wasm pointer misalignment issues on Apple silicon devices. (#1778)
- Fix the decoding of events observed by the Ethereum oracle (#1852)
- Trigger the NUT VP when NUTs are moved between accounts during wasm transaction execution (#1854)
- Fix the Ethereum Bridge VP (#1855)
- Miscellaneous Ethereum smart contract nonce fixes (#1856)
- Log proper duped validator votes on Ethereum tallies (#1860)
- Implement Ethereum token whitelist. (#1290)
- Implemented the runtime gas and fee system. (#1327)
- Control the flow of NAM over the Ethereum bridge (#1781)
- Update ethbridge-rs to v0.22.0 (#1789)
- Allow Bridge pool transfer fees to be paid in arbitrary token types (except NUTs) (#1795)
- Adds the possibility to dump the state of the db at a custom height. (#1468)
- Added various fee types to the output of the Bridge pool recommendations RPC (#1811)
- Ensure that Namada (shared) crate can be built for WASM target. (#1828)
- Upgraded the MASP crate commit used by Namada to the latest version. (#1842)
- Add the Bridge pool as a default wallet address (#1848)
- Call
Message::parse
directly (#1849) - Parse Eth addresses from the CLI (#1850)
- Split Bridge pool transfer hashes on all whitespace toks (#1851)
- Denominate non-whitelisted NUT amounts (#1853)
- Removed replay protection storage keys from the merkle tree. (#1863)
Namada 0.21.0 is a patch release addressing some minor changes to the PGF and IBC components.
- Introduce a new genesis section to control PGF storage at chain start. (#1816)
- Support the memo field of IBC transfer (#1635)
Namada 0.21.0 is a minor release introducing a first version of the PGF mechanism, addressing several improvements to the PoS and Governance system and some changes to the ledger stability.
- Fixes buggy Display for the Dec type when the number is some multiple of 10 (#1774)
- Downgraded sysinfo back to v0.27.8 with a working available memory report on Mac M1. (#1775)
- Fixes buggy error handling in pos unjail_validator. Now properly enforces that if an unjail tx is submitted when the validator state is something other than Jailed in any of the current or future epochs, the tx will error out and fail. (#1793)
- Fix available_memory size (#1801)
- Introduce multisignature accounts and transaction format. It is now possible to supply multiple public keys when creating a new account/validator and specify the minimum number of signatures required to authorize a transaction. (#1765)
- Introduce a simplified version of Public Good Fundings. (#1803)
- Added pre-built MASP proofs for integration tests. (#1768)
Namada 0.20.1 is a patch release addressing a bug in the inflation mechanism and minor ledger improvements.
- Ensure that each crate in the workspace can be built with default features. (#1712)
- Fixed transparent balance query when only an owner address is specified without an explicit token. (#1751)
- Fixes how PoS inflation is calculated. (#1756)
- Fixes the ordering for I256 type. (#1763)
- Removed the associated type for an address from
trait NativeVp
. (#1725)
Namada 0.20.0 is a minor releasing addressing several improvements to the PoS system and the ledger stability.
- Fix genesis
faucet_withdrawal_limit
parser to respect tokens' denomination. (#1667) - PoS: ensure that the size of genesis validator set
is limited by the
max_validator_slots
parameter. (#1686) - Fix inconsistency state before commit (#1709)
- PoS: Fixed an epoch boundary issue in which a validator who's being slashed on a start of a new epoch is disregarded during processing of block votes. (#1729)
- PoS: purge validator sets for old epochs from the storage; store total validator stake (#1129)
- Added a reusable token balance query method. (#1173)
- Replaced file-lock with fd-lock dependency to support Windows build. (#1605)
- Added a command to wait for the next epoch:
client utils epoch-sleep
. (#1621) - Added a client query for
validator-state
and improved the slashes query to show more info. (#1656) - Removed associated type on
masp::ShieldedUtils
. This type was an attempt to reduce the number of generic parameters needed when interacting with MASP but resulted in making code re-use extremely difficult. (#1670) - Removed
impl From<u64> for EthBridgeVotingPower
and replaced it with aTryFrom
. (#1692) - Updated sysinfo dependency. (#1695)
- Refactored storage code to only use an immutable reference when reading and writing to a batch. (#1717)
- Replaced token sub-prefix with a multitoken address and native VP for IBC and ETH bridge. (#1693)
- PoS: Keep the data for last two epochs by default. (#1733)
- Refactored CLI into libraries for future re-use in integration tests and to enable generic IO. (#1738)
- Added integration testing infrastructure for node, client and the wallet and replaced MASP E2E tests with integration tests. (#1714)
Namada 0.19.0 is a minor releasing addressing the integration with the namada trustless ethereum bridge.
Namada 0.18.1 is a patch release that addresses transaction format changes and minor ledger storage improvements.
- Fixed bug that allowed transactions to be modified without invalidating transaction hash (#1607)
- Move the content and code of init proposal transactions into separare section to reduce tx size for hardware wallets (#1611)
- Storage: Add a function to delete key-vals matching a given prefix. (#1632)
- Separate the transaction building, signing, and submission actions in the SDKs API to enable hardware wallet usage (#1498)
- Disable encryption when sending transactions (#1636)
- Storage: Ensure that prefix iterator only returns key- vals in which the prefix key segments are matched fully. (#1642)
Namada 0.18.0 is a minor release primarily addressing a major change in the token amount representation, the addition of a new validator set category, and other minor improvements to the ledger stability.
- PoS: Ensure that when a validator is slashed, it gets removed from validator set in the same epoch in Namada state as in CometBFT's state. (#1582)
- Fix signature verification with secp256k1 in WASM VPs. (#1599)
- Storage: Fix iterator without a prefix. (#1615)
- Adds a third validator set, the below threshold set, which contains all validators whose stake is below some parameterizable threshold. (#1576)
- Added
NAMADA_LOG_DIR
env var for logging to file(s) andNAMADA_LOG_ROLLING
for setting rolling logs frequency. The rolling frequency can be set to never, minutely, hourly or daily. If not set, the default is never. (#1578)
- Update clap to the latest version. (#64)
- Updated wasmer to v2.3.0 and switched from pwasm-utils to wasm-instrument. (#1604)
Namada 0.17.5 is a maintenance release chiefly addressing MASP parameter validation.
- Check MASP parameters are correct in the ledger node. (#1619)
Namada 0.17.4 is a minor release improving the codebase by bumping the rust toolchain.
- Fix missing async awaits in MASP load and save calls. (#1588)
Namada 0.17.3 is a minor release switching from tendermint to cometbft.
- Correctly handle parsing storage key if they are empty. (#1345)
- Enable users to change any tendermint config options via namada config. (#1570)
- Added query endpoint for IBC events replacing Tendermint index. (#1404)
- Switch from unreleased Tendermint fork to an official CometBFT release v0.37.1. (#1476)
Namada 0.17.2 is a minor release featuring improvements to the client stability.
- Do not add address if it already exists in the wallet. (#1504)
- When processing slashes, bonds and unbonds that became active after the infraction epoch must be properly accounted in order to properly deduct stake that accounts for the precise slash amount. A bug is fixed in the procedure that properly performs this accounting. (#1520)
- Fix the message when a client is waiting for a node to sync on queries or transactions. (#1522)
- This change will enable usage of the Namada SDK to create MASP transactions from non-CLI clients. (#1524)
- Fixing how token balances are displayed in case of missing --token option. (#1528)
- The slashed token amounts contained inside the bond and unbond information returned by the PoS library fn bonds_and_unbonds are fixed and properly computed. (#1533)
- PoS: Fixed the client to change configuration to validator
mode after a successful
init-validator
transaction. (#1549) - PoS: fixed a check for whether a given address belongs to a validator account to work properly with newly created accounts. (#1553)
- Fixes the slash rate output in the query_slashes client command and some redundancy in misbehavior reporting logs. (#1558)
- Add a command,
namadac utils default-base-dir
, to print the default base directory the command line would use were one not provided by the user. (#1491) - Improve the established address in-memory representation and use a full SHA-256 digest for their generation. (#1510)
- Improve the implicit address and PKH in-memory representation. (#1512)
- Improve help message for address add command (#1514)
- PoS: make a re-usable bonds and unbonds details query. (#1518)
Namada 0.17.0 is a scheduled minor release featuring several improvements to the slashing mechanism, wallet address derivation, transaction structure and the ledger stability.
- Fixed the PrefixIter order of iteration in the write- log to always match the iteration order in the storage. (#1141)
- Persists a newly added storage field for epoch update blocks delay to be
available after node restart when not
None
which may break consensus. (#1455) - Client: Fixed an off-by-one error to stop waiting for start or catch-up when max tries are reached. (#1456)
- Include the wasm tx hash instead of the wasm blob when constructing a transaction (#1474)
- Fix a client block query to avoid seeing pre-committed blocks. (#1534)
- Adds specs for gas and fee (#889)
- The implementation of the cubic slashing system that touches virtually all parts of the proof-of-stake system. Slashes tokens are currently kept in the PoS address rather than being transferred to the Slash Pool address. This PR also includes significant testing infrastructure, highlighted by the PoS state machine test with slashing. (#892)
- Implements HD wallet derivation / recovery from a given mnemonic code (#1110)
- PoS: Added a client command
find-validator --tm-address <address>
to find validator's Namada address by Tendermint address. (#1344)
- Make Namada transactions signable on hardware constrained wallets by making them smaller. (#1093)
- Added
multicore
feature flag to the namada and namada_core crate that can be switched off for JS WASM build. Additionally, changed thetrait ShieldedUtils
to be async. (#1238) - Zeroizes memory containing passphrases in wallet. (#1425)
- Added some missing cli option for cli wallet (#1432)
- Improve logging error when submiting an invalid validator commission change tx (#1434)
- Correct a typo in the error change commission error handling (#1435)
- Improve the reveal tx naming in cli (#1436)
- Improve computations readability when calculating inflations (#1444)
- Remove abci++ dependencies (#1449)
- Reorganize the structure of transactions (#1462)
- Improved log entries related to PoS system. (#1509)
Namada 0.16.0 is a regular release focused on providing the Namada SDK to developers.
- Added page table-of-contents via mdbook-pagetoc plugin for the developer documentation. (#1275)
- Provide Namada SDK (in particular, the
namada
crate may now be usefully linked into user applications). (#925) - Bump RocksDB crate to 0.21.0 to address compilation errors on certain C++ toolchains. (#1366)
Namada 0.15.4 is a maintenance release addressing the invalid creation of blocks due to missing replay protection checks during prepare proposal.
- Fixed a bug in
prepare_proposal
causing the creation of blocks containing already applied transactions. (#1405)
- Make Tendermint consensus paramenters configurable via Namada configuration. (#1399)
- Improved error logs in
process_proposal
and added more info toInternalStats
(#1407)
Namada 0.15.3 is a maintenance release addressing the creation of incorrect data directories on Mac and Windows platforms.
- Place the default data directory in the local rather than the roaming profile on Windows. (#1368)
- Use blank qualifier and organization, and upcased Namada, to construct default base directories on Mac and Windows platforms. (#1369)
Namada 0.15.2 is a bugfix release containing various fixes, including a major improvement to storage usage.
- Fixed an issue with the iterator of LazyMap with a nested LazyVec collection that would match non-data keys and fail to decode those with the data decoder. (#1218)
- PoS: fixed a function for clearing of historical epoched data (#1325)
- Added a utility command to the CLI to compute a tendermint address from a namada public key. (#1152)
- Changed the default base directory. On linux, the default path will be
$XDG_DATA_HOME/namada
, on OSX it will be$HOME/Library/Application Support/com.heliax.namada
. (#1138) - RocksDB optimization to reduce the storage usage (#1333)
- Enabled integer overflow checks in release build. (#1295)
Namada 0.15.1 is a patch release addressing issues with high storage usage due to duplicative storage of wasm code.
Namada 0.15.0 is a regular minor release featuring various implementation improvements.
- Fix to read the prev value for batch delete (#1116)
- Returns an error when getting proof of a non-committed block (#1154)
- Fixed dump-db node utility which was not iterating on db keys correctly leading to duplicates in the dump. Added an historic flag to also dump the diff keys. (#1184)
- Fixed an issue with lazy collections sub-key validation with the
Address
type. This issue was also affecting the iterator of nestedLazyMap
. (#1212) - Fixed various features of the CLI output for querying bonds and performing an unbond action. (#1239)
- PoS: Fixed an issue with slashable evidence processed and applied at a new epoch causing a ledger to crash. (#1246)
- Addresses are now being ordered by their string format (bech32m) to ensure that their order is preserved inside raw storage keys. (#1256)
- Prevent clients from delegating from a validator account to another validator account. (#1263)
- Infrastructure for PoS inflation and rewards. Includes inflation using the PD controller mechanism and rewards based on validator block voting behavior. Rewards are tracked and effectively distributed using the F1 fee mechanism. In this PR, rewards are calculated and stored, but they are not yet applied to voting powers or considered when unbonding and withdrawing. (#714)
- Implements governance custom proposals (#1056)
- Adds expiration field to transactions (#1123)
- Added a rollback command to revert the Namada state to that of the previous block. (#1187)
- Introduced a new ledger sub-command:
run-until
. Then, at the provided block height, the node will either halt or suspend. If the chain is suspended, only the consensus connection is suspended. This means that the node can still be queried. This is useful for debugging purposes. (#1189)
- Return early in PosBase::transfer if an attempt is made to transfer zero tokens (#856)
- Adds hash-based replay protection (#1017)
- Renamed "ledger-address" CLI argument to "node". (#1031)
- Added a TempWlStorage for storage_api::StorageRead/Write in ABCI++ prepare/process proposal handler. (#1051)
- Added a wallet section for token addresses to replace hard- coded values with addresses loaded from genesis configuration. (#1081)
- Improved the CLI description of the start time node argument. (#1087)
- Adds chain id field to transactions (#1106)
- update help text on namadc utils join-network so that the url displays cleanly on a single line, instead of being cut half way (#1109)
- Check in the client that the ledger node has at least one block and is synced before submitting transactions and queries. (#1258)
- Add utility code for working with test wasms (#893)
Namada 0.14.3 is a bugfix release addressing mainly disk usage inefficiencies.
- Check if validators are valid in pre-genesis setup. (#1140)
- Now load conversions from storage even for epoch 1. (#1244)
- Fixed run_ledger_load_state_and_reset test in debug build. (#1131)
Namada 0.14.2 is a maintenance release addressing issues with proof-of-stake validator logic.
- Fixed the PrefixIter order of iteration in the write- log to always match the iteration order in the storage. (#1141)
- Fixed the init-chain handler to stop committing state to the DB as it may be re-applied when the node is shut-down before the first block is committed, leading to an invalid genesis state. (#1182)
- Fixed an issue in which a validator's stake and validator sets data gets into an invalid state (duplicate records with incorrect values) due to a logic error in clearing of historical epoch data. (#1191)
- Added a lazy set collection. (#1196)
- Ensure that PoS validator consensus keys are unique. (#1197)
Namada 0.14.1 is a bugfix release addressing issues with inactive validator set updates in proof of stake.
- Fix Tendermint validator set update to properly skip validator with no voting power. (#1146)
Namada 0.14.0 is a scheduled minor release with various protocol stability improvements.
- Add validation for balances with IBC sub prefix (#354)
- Fixed the prefix iterator method to respect modifications in the write log. (#913)
- Update specs for Ethereum bridge and block allocator (#1058)
- Refactored PoS storage using lazy data collections, that allow to implement PoS state changes for collections with variable size with a bounded gas cost. (#16)
- The unbonding action has been updated to affect validator voting power at
pipeline
offset and become withdrawable starting frompipeline + unbonding
offset. (#366) - The PoS
client bonds
query has been improved to show all delegations to a validator, when only the--validator
argument is specified. (#43) - Removed PoS validator
Pending
state. (#157) - Renamed PoS
active
andinactive
validator sub-sets toconsensus
andbelow_capacity
sets. (#787) - Renamed PoS variables that look-up a sum of delta values from
total_deltas
tototal_stake
. (#158) - Added PoS validator sets tests. (#15)
- Added PoS genesis initialization tests. (#13)
- Complete checked arithmetic for Amount type (#748)
- Allow to dump a last committed block's state with
namada node dump-db
command. (#1095) - Improved the
WlStorage
to write protocol changes via block-level write log. This is then used to make sure that no storage changes are committed in ABCIFinalizeBlock
request handler and only in theCommit
handler. (#1108)
- Add command line option to dump transactions while signing them. (#1054)
- Add e2e tests for multitoken transfers (#886)
- Modify tx_write_storage_key test wasm to be able to modify any arbitrary value (#894)
- Avoid lowercase inputs in tests, so they test whether lowercasing is properly performed on those inputs. (#1065)
Namada 0.13.3 is a bugfix release addressing issues with voting power calculation logic.
- Fixed Tendermint validator set update check to respect the PoS tm_votes_per_token parameter. (#1083)
Namada 0.13.2 is a bugfix release addressing issues with the 0.13 release series.
- Fixes testnet wrapper fee checks (#1019)
- Correctly report e2e test failures in CI. (#1045)
- Append Namada version number to tendermint moniker. (#1057)
- Correct the whitelist test in vp_implicit to use case-insensitive whitelist hashes. (#1037)
- Address failing e2e tests which were not caught earlier. (#1062)
Namada 0.13.1 is a maintenance release fixing an error in the tx and vp whitelists.
- Handle the tx and vp hash whitelists case-insensitively. (#1018)
- More information in transaction logging (#1035)
Namada 0.13.0 is a scheduled minor release.
- Fix the commission rate change wasm test, which failed because an arbitrary value for a new rate was allowed that could be equal to the previous rate. (#965)
- Removed 'rev_iter_prefix' from storage API as its implementation depends on RocksDB and it doesn't work as expected. (#912)
- Add a --time argument to the node to specify the time the node should start. (#973)
- Reduce the block size for transactions to 5 MiB. (#974)
- Disable 'Send' on async traits that don't need 'Send' futures. This allows to use them with 'wasm-bindgen'. (#900)
- Binary search ledger storage keys to match faster. (#903)
- Make queries data structures public for inclusion in rustdoc. (#909)
- Add a macro to derive storage keys from a struct. (#926)
- Added a basic fee implementation for testnet. (#962)
- Hide the explicit lifetime from StorageRead trait. (#966)
- Allow to set the tracing format with NAMADA_LOG_FMT env var to either full (default), json or pretty. (#968)
- Added an optional PoW challenge to the wrapper transactions for testnets, to allow to submit transactions without having enough balance to cover the minimum transaction fee and to withdraw tokens from a faucet account. (#969)
- Add genesis parameter to control wrapper transaction fees. (#972)
- Add a max_proposal_bytes parameter to the ledger. (#975)
- Update tendermint to v0.1.4-abciplus. (#667)
- Run fewer cases on update_epoch_after_its_duration, for a faster test suite. (#876)
- Use the correct options (--gas-amount, --gas- token) in the ledger_txs_and_queries E2E test. (#911)
Namada 0.12.2 is a hotfix release, limiting transactions included in a block by size.
- Limit block space to under Tendermint's limit, and limit transactions included in a block by their size. (#952)
- Don't attempt to include matchmaker DLLs, which no longer exist, in release packages. (#943)
- Include license information in release binary tarballs. (#945)
Namada 0.12.1 is a hotfix release, fixing a node crash on malformed transactions to the MASP.
- Avoid panicking unwrap()s in vp_verify_masp, to prevent crashing the node on malformed transactions. (#942)
Namada 0.12.0 is a scheduled minor release.
- Allow sign extension opcodes in WASM (#833)
- Remove the MerkleValue type and just use byte slices for Merkle tree values. (#846)
- Use index-set to reduce serialized size of block results. (#859)
- Allow size zero bonds in PoS for testing. (#813)
Namada 0.11.0 is a scheduled minor release.
- Fix building with the
abcipp
feature again (#754) - Fixed validation of a validator initialization transaction. (#763)
- Allow to set the native token via genesis configuration. (#582)
- Added a validity predicate for implicit accounts. This is set in protocol parameters and may be changed via governance. Additionally, added automatic public key reveal in the client that use an implicit account that hasn't revealed its PK yet as a source. It's also possible to manually submit reveal transaction with client command (#592)
- PoS: Removed staking reward addresses in preparation of auto-staked rewards system. (#687)
- Allow to set validator's commission rates and a limit on change of commission rate per epoch. Commission rate can be changed via a transaction authorized by the validator, but the limit is immutable value, set when the validator's account is initialized. (#695)
- Optimize the PoS code to depend only on bonded stake, removing the VotingPower(Delta) structs. This mitigates some previous information loss in PoS calculations. Instead, the notion of voting power is only relevant when communicating with Tendermint. (#707)
- Update the set of parameters in the PoS system according to the latest spec and standardizes the use of the rust_decimal crate for parameters and calculations that require fractional numbers. (#708)
- Renamed transaction CLI arguments
--fee-amount
and--fee-token
to--gas- amount
and--gas-token
. (#775)
- Refactored token decimal formatting. (#436)
- Added PoS specific queries (#570)
- Added a custom events store and replaced WebSocket client for transaction results with query endpoints to the events store. (#674)
- Refactored governance code to use storage_api. (#719)
- Public parts of shared
namada
crate have been split up into anamada_core
crate. Thenamada_proof_of_stake
,namada_vp_prelude
andnamada_tx_prelude
crates now depend on thisnamada_core
crate. (#733) - Sign over the hash of code rather than code in transaction signing. (#807)
- Improve some docstrings relating to block heights (#650)
- Don't fake a wasm VP for internal addresses in tx tests (#694)
Namada 0.10.1 is a point release with fixes to shielded transactions.
- Avoid reading from nonexistent storage keys in shielded-to-shielded transfers. (#797)
Namada 0.10.0 is a scheduled minor release, focused on IBC and MASP integrations.
- Fix compatiblity of IBC Acknowledgement message and FungibleTokenData with ibc-go (#261)
- Fix the block header merkle root hash for response to finalizing block. (#298)
- Fix IBC token transfer to comply with ICS20. (#625)
- Fixed storage read from arbitrary height and added an optional config value
shell.storage_read_past_height_limit
to limit how far back storage queries can read from. (#706) - Fix
make debug-wasm-scripts
, which attempted an incorrect rename. (#720) - require_latest_height should skip requests with height 0 (#752)
- Add client command 'ibc-transfer'. (#626)
- Added MASP client and wallet functionality. Added new command to view transfer history. (#1234)
Namada 0.9.0 is a scheduled minor release.
- Add back consensus commit timeout configuration set in tendermint (#671)
- Fix info logs to show by default for namadan (#702)
- Client: Add a command to query the last committed block's hash, height and timestamp. (#658)
- Replace the handcrafted RPC paths with a new
router!
macro RPC queries definition that handles dynamic path matching, type-safe handler function dispatch and also generates type-safe client methods for the queries. (#553) - Move all shell RPC endpoints under the /shell path. This is a breaking change to RPC consumers. (#569)
- Renamed native token from XAN to NAM (#632)
Namada 0.8.1 is a point release focused on standardizing Tendermint compatibility.
- Shim ABCI++ methods for tendermint (#510)
Namada 0.8.0 is a regular minor release.
- Switch to a alternative sparse merkle tree implementation for IBC sub-tree to be able to support proofs compatible with the current version of ICS23 (#279)
- Fixed validator raw hash corresponding to validator address in Tendermint (#326)
- Fix the value recorded for epoch start block height. (#384)
- Fix the rustdoc build. (#419)
- Fix the value recorded for epoch start block height. (#594)
- Make read_wasm return an error instead of exiting in InitChain (#1099)
- Fix the
last_epoch
field in the shell to only be updated when the block is committed. (#1249)
- Added multitoken transfer and query for bridges (#132)
- Added lazy vector and map data structures for ledger storage (#503)
- Validate WASM code of validity predicates written by transactions. (#240)
- Refactored PoS VP logic (#318)
- Added a StorageRead trait for a common interface for VPs prior and posterior state, transactions and direct storage access for protocol and RPC handlers (#324)
- Added a StorageWrite trait for a common interface for transactions and direct storage access for protocol (#331)
- Re-use encoding/decoding storage write/read and handle any errors (#334)
- Added a simpler prefix iterator API that returns
std::iter::Iterator
with the storage keys parsed and a variant that also decodes stored values with Borsh (#335) - Handles the case where a custom
$CARGO_TARGET_DIR
is set during WASM build (#337) - Added
pre/post
methods intotrait VpEnv
that return objects implementingtrait StorageRead
for re-use of library code written on top ofStorageRead
inside validity predicates. (#380) - Fix order of prefix iterator to be sorted by storage keys and add support for a reverse order prefix iterator. (#409)
- Re-use
storage_api::Error
type that supports wrapping custom error inVpEnv
andTxEnv
traits. (#465) - Fixed governance parameters, tally, tx whitelist and renamed treasury (#467)
- Enable mdbook-admonish for the specs (#518)
- Extend Merkle tree storage to support multiple Merkle trees with a uniform interface. (#547)
- Fix a typo in an error (#605)
- Added WASM transaction and validity predicate
Ctx
with methods for host environment functions to unify the interface of native VPs and WASM VPs undertrait VpEnv
(#1093) - Allows simple retrival of aliases from addresses in the wallet without the need for multiple hashmaps. This is the first step to improving the UI if one wants to show aliases when fetching addresses from anoma wallet (#1138)
- Allow specifying an absolute path for the wasm directory (#1148)
- Add functionality to anomac to download wasms for a given chain (#1159)
- Improved CLI experience for 'anomaw address find' (#1161)
- Wallet: Increase the number of iterations used for keys encryption to the recommended value. (#1168)
- Improve the error message that is displayed when anoma binaries are run without having joined a chain (#1176)
- Refactored ledger startup code (#1231)
- Replace Tendermint consensus evidence parameters with application level evidence filter for outdated evidence. (#1248)
- Updated rockDB dependency to 0.19.0 and enabled its jemalloc feature. (#452)
- Removed intent gossiper and matchmaker code (#493)
- Use a cargo workspace for some of our wasm crates (#1096)
- Added a make recipe to build WASM in debug mode with
make debug-wasm-scripts
(#1243)
- Test PoS transaction for bonding, unbonding and withdrawal. Fixed an issue found on unbonding. (#462)
- Fix a condition in tx_bond test that causes a false negative result (#590)
- Fixed ANOMA_E2E_KEEP_TEMP=true to work in e2e::setup::network (#1221)
Namada 0.7.1 is a patch release of the Namada software, continuing the version numbering sequence previously used in the Anoma repository. There are few important user-facing changes, but this is the first tagged release in the Namada repository.
- New CI using Github Actions (#222)
- Added OpenAPI spec (#322)
- Applied various fixes and updates to the PoS system spec and integration spec (#1070)
- Fixes libraries doc typos and correct comment on the clap crate (#1143)
- Added secp256k1 support (#278)
- Zeroize secret keys from memory (#277)
- Better logging for end-to-end tests, and logs are stored to disk in the test's temporary working directory (#1202)
- Hidden the stdout of Tendermint process by default. To include
it in the node's output, run with
ANOMA_TM_STDOUT=true
(#1239)
- Make some .gitignore patterns relative to repo root (#1158)
- E2E: Consume unread output before checking exit status. (#247)
- Switch back from a fork to a newly released version of expectrl (#1142)
Anoma 0.6.1 is a patch release updating the Rust toolchain and various libraries.
- Fixed PoS
votes_per_token
parameter update validation (#1181)
- Ledger: Updated the version of Tendermint used for ABCI++ (#1088)
- Add full support for ProcessProposal and FinalizeBlock
- Updated the shims
- Updated
tendermint-rs
,ibc-rs
, andtower-abci
deps - Updated the proto definitions
- Added Tendermint's new method of a BFT timestamping
- Updated the format of Tendermint's new config
- Fixed booting up the tendermint node in the ledger with correct settings
- Refactored storage to account for the fact that tendermint no longer passes in block headers
- Client: Configured Tendermints new event log and JSON RPC API for events querying (#1088)
- Added necessary config parameters to our tendermint node's configuration
- Wrote a jsonrpc client for querying tendermint's event logs
- Refactored how txs are submitted in the client when the
ABCI-plus-plus
feature is set to use jsonrpc calls instead of websockets.
- Updated RocksDB dependency version to v0.18.0 (#1135)
Anoma 0.6.0 is a scheduled minor release.
- Ledger: Set the counterparty connection ID when the connection ack (#968)
- Ledger: Set the counterparty channel ID when the ack (#980)
- Ledger: Encode a commitment with Protobuf (#988)
- Client: Fix Tendermint node ID derivation from ed25519 keys in "utils init- network" command (#992)
- Ledger: Reuse IBC port (#1011)
- Ledger: Fix to write the initial value of IBC sequence (#1014)
- Fixes installation of Tendermint on M1 Macs (#1018)
- Ledger: Fix IBC VP for packet timeout (#1029)
- Ledger: Fix vp read_pre to read from write_log for the previous txs updates (#1032)
- Ledger: Fix IBC token VP (#1040)
- Fix loading of validator VP during chain initialization (#1054)
- Fix possible overflow when formatting token amount to a string. (#1087)
- Add docs for internal testnet for MASP (#1013)
- Applied various fixes to MASP internal testnet guide (#1017)
- Added docs page for testnet launch procedure. (#1028)
- Add links to doc pages sources on Github. (#1030)
- User guide and testnets documentation has been separated and moved to https://github.com/anoma/docs (#1080)
- Updated whitepaper and vision paper links (#1116)
- Install mdbook-admonish plugin (#1132)
- Include Rust nightly version from root file (#1133)
- Client: Add raw bytes query command "query-bytes" from the storage. (#836)
- Added on-chain and off-chain governance validity predicate with client support for submitting proposal transaction, proposal queries and for creating off- chain proposals. (#954)
- Ledger: Change the storage hasher to SHA256 (#968)
- Governance: Added proposal vote transaction and validity predicate support. Also improved the proposal query command. (#975)
- Ledger: Query with the specified height (#987)
- Add stub EthBridge internal address (#1066)
- Ledger: The validity predicate checks rule has been simplified so that every validity predicate triggered by a transaction receives all the storage keys touched by the transaction. (#955)
- Ledger: write/get block header to get an old consensus state (#974)
- Ledger: Use non-validator full node Tendermint mode by default. (#978)
- Client: Updated the utils commands
init-genesis-validator
andjoin- network
to be able to automatically configure a genesis validator node. (#997) - Show an error when calling
anomac utils join-network
if trying to download a file and it is missing (#1044) - Wallet: various store and API changes and additions for genesis setup. (#1063)
- Ledger: Updated the version of Tendermint used for ABCI++ (#1088)
- Add full support for ProcessProposal and FinalizeBlock
- Updated the shims
- Updated
tendermint-rs
,ibc-rs
, andtower-abci
deps - Updated the proto definitions
- Added Tendermint's new method of a BFT timestamping
- Updated the format of Tendermint's new config
- Fixed booting up the tendermint node in the ledger with correct settings
- Refactored storage to account for the fact that tendermint no longer passes in block headers
- Client: Configured Tendermints new event log and JSON RPC API for events querying (#1088)
- Added necessary config parameters to our tendermint node's configuration
- Wrote a jsonrpc client for querying tendermint's event logs
- Refactored how txs are submitted in the client when the
ABCI-plus-plus
feature is set to use jsonrpc calls instead of websockets.
- Fixed Nix build and updated Nix dependencies. (#994)
- Update
make install
command to respect the Cargo.lock file (#1118)
- Replaced E2E tests command runner library with expectrl (#686)
- Added state-machine property-based tests for PoS validity predicate. (#927)
- WASM host environment testing helpers are now pinned to a stable memory location to avoid issues in state machine test runner. (#947)
- More logging in end-to-end tests (#1071)
Anoma 0.5.0 is a scheduled minor release.
- WASM: Fix WASM cache exponential backoff (#834)
- Ledger: Temporarily downgrade back to wasmer v1.0.2 until the leak that is affecting Linux is found and fixed. (#870)
- Ledger: Upgrade to wasmer v2.2.0 and fix memory leak caused by a circular reference in the WASM memory (#871)
- Change the validity predicate main entry-point function to receive
changed_keys
andverifiers
arguments in a deterministic order. (#891) - Dependency: Backport libp2p-noise patch that fixes a compilation issue from libp2p/rust-libp2p#2264 (#908)
- Wasm: Re-add accidentaly removed
tx_ibc
WASM andvm_env::ibc
module (#916) - Ledger & Matchmaker: In "dev" chain with "dev" build, load WASM directly from
the root
wasm
directory. (#933) - Ledger: Decode signed data in IBC VPs (#938)
- Ledger: Fixed handling of the Tendermint mode global argument. (#943)
- Ledger: Set IBC event besides tx_result (#944)
- Ledger: Fix IBC ClientReader functions (#949)
- Ledger: Set 0 as IBC height revision number (#950)
- Ledger: Fix the path via ABCI query (#958)
- Move cron pipeline script externally, fix cron scripts dependencies (#906)
- Fix cron scripts execution (#912)
- Build docs without attempting to merge master (#924)
- Added specifications for ledger, RPC, default transactions and encoding, which is partially derived from code. (#887)
-
Added IBC transaction (#411)
-
Ledger: Added validity predicate whitelist configurable for a network to limit which validity predicates are permitted (#875)
-
Ledger: Added transaction whitelist configurable for a network to limit which transactions are permitted (#876)
-
Added transactions and vp to create and mint nfts. (#882)
-
Supports a new type of transaction intended to be sent by validators, so called protocol transactions.
- New transaction type
- Generation of keys for validators to sign protocol txs
- A service to broadcast protocol txs from the ledger
- Improved client tx broadcasting
(#913)
- Added a common signing schemes interface to ease additions/removals of signing schemes to the ledger. (#225)
- Canonicalize all wallet aliases to lowercase in the CLI. (#564)
- Ledger: Handle spurious errors on user initiated shutdown. (#716)
- Dependency: Replace ed22519-dalek with ed22519-consensus. (#753)
- Network config: Make the WASM checksums optional in network source, as it is
filled in by
init-network
utils command. (#777) - Network config: The WASM dir were moved inside chain directories. (#838)
- Ledger: added support for transactions to write temporary data that can be read by any VP that is checking the validity of the transaction. This is being used in IBC native VP for fungible token transfer. (#848)
- Ledger: Update tendermint-rs and ibc-rs (#863)
- Ledger: Sign transaction hash of bytes instead of the bytes themselves. (#886)
- Update the Rust toolchain to 1.58.1. (#902)
- Implemented
BorshSchema
for ledger's the public types. (#907) - Updated the tx result from an undecryptable tx to give an error code and message stating message was not decryptable (#910)
- Ledger: Update ibc-rs to v0.12.0 (#926)
- WASM: Use tx/VP specific preludes. (#948)
- WASM: Split up tx and VP modules into files. (#952)
Anoma 0.4.0 is a scheduled minor release, released 31 January 2022.
- Matchmaker: Fix a matchmaker's state management via a raw pointer that was causing segfaults in the matchmaker in release build. (#806)
- Build Linux package directly from tagged releases, and upload wasm from tags. (#801)
- Client/Ledger: Added a flag to allow to indicate that client should exit once the transaction is in mempool without waiting for it to be applied in a block. (#403)
- Ledger: Emit and validate IBC events from transactions. (#480)
- Add
anomac tx-result
command to query the result of a transaction given a transaction hash. (#634) - Ledger: Use IBC messages from ibc-rs crate to be used in the relayer. (#699)
- Ledger: Added fungible token transfer support to IBC validity predicate. (#823)
- Ledger: Add IbcActions trait to execute IBC operations (#411)
- Matchmaker has been separated from intent gossiper node. Multiple matchmakers can connect to an intent gossiper node over WebSocket. (#579)
- Wallet: Ask for encryption password confirmation when generating a new key. (#625)
- Ledger: Two-layer merkle tree for the IBC proof verification (#671)
- Testing: Increments network configuration ports used for E2E tests and ABCI++ enabled E2E tests to avoid sharing resources. (#717)
- Matchmaker: compiling and loading matchmakers to and from dylib instead of WASM (#718)
- Ledger: Coding IBC-related data without Borsh (#734)
- Matchmaker: re-purpose the matchmaker macro to manage state of a custom matchmaker implementation (#746)
- Testing: Update to a new branch of property-based state machine testing with initial state shrinking. (#765)
- Port the Nix build to the new Flakes system. (#770)
- Client/Utils: Respect wasm directory, when specified and non-default in the command. The command now doesn't unpack the network config archive into its default directories, if any of them are specified with non-default values. (#813)
- Install the default token exchange matchmaker implemenetation into
~/.cargo/lib
directory when building from source. When not absolute, the matchmaker will attempt to load the matchmaker from the same path as where the binary is being ran from, from~/.cargo/lib
or the current working directory. (#816)
- Force non-dev build for make build-release, check-release & package (#791)
Anoma 0.3.1 - first maintenance release in the 0.3.x series. Protocol compatible with 0.3.0, but changes the on-disk storage format - nodes will need to resync from scratch.
- Fix the
anoma client utils join-network
to respect--base-dir
argument, if specified (#723) - Ledger: Fix an issue in the default thread count usage calculation that was previously causing it to crash for a target with a single logical core. (#726)
- Ledger: write storage diffs from the correct current block height and ignore these on loading last known block's state from persisted state on disk. (#732)
- Ledger: Handle Unix and Windows interrupt and termination signals to shut down cleanly. (#768)
- Ledger: enable atomic commits in RocksDB and explicitly flush blocks without waiting (#372)
- Fix the
anoma client utils join-network
to respect--base-dir
argument, if specified (#711) - Ledger: Write predecessor block's values to be able to integrate Tendermint's rollback helper command. (#729)
- Include a more accurate build version from git describe in help output version strings. (#733)
- Ledger: Updated wasmer dependency to v2.1.1. (#756)
- Config: Enable setting config values via environment variables, add variables for configuring Tendermint instrumentation and allow missing values in the config file (filled in with defaults defined in the code) (#774)
- Gossip: Enable peer discovery with libp2p Kademlia and Identify protocol and allow to keep the established peer connections open. (#775)
- Adds missing nix-shell openssl dependency. (#694)
- Don't include wasm checksums in the package, since the network configuration mechanisms now handle this. (#731)
- Force non-dev build for make clippy. (#783)
Anoma 0.3.0
- Ledger: Using fixes in
tower-abci
crate that improve shutdown and error handling. (#614) - Ledger: Fix rlimit breaking build on non-unix target. (#615)
- Ledger/client: Fixed an issue with obtaining a result of a transaction. (#668)
- Ledger: Fixed Windows build. (#684)
- Use at least one thread for rocksdb compaction. (#704)
- Downgrade to an older version of wasmer (1.0.2) to avoid runaway memory usage. (#708)
- Process ABCI requests in order in the shell. (#713)
- Added jobs for ABCI++ feature enabled builds (#661)
- Fix broken links (#605)
- Improved user guide installation section. Improved development scripts. (#613)
- Updated Anoma prototypes pages. (#642)
- Fix broken links to WASM sources. (#660)
- Ledger: Added storage query (non-)membership proofs (#498)
- Ledger: Make all transactions encrypted, add in ABCI++, support commit and reveal scheme for txs in a block. This feature is disabled by default because it requires a custom Tendermint build. The Tendermint version required with default features remains unchanged (currently 0.34.x). (#622)
- Cache compiled wasm modules on disk. (#697)
- Improve how the
anoma
binary launches a sub-process by replacing itself with it. (#609) - Ledger/client: Add archives for release-able networks from init-network utils command. (#616)
- Ledger: Open the default P2P address for non-localhost networks (#617)
- Tooling (switched to Rust 1.56.1 and nightly to 2021-11-01. Many Cargo dependencies updates. (#618)
- Ledger: Join Anoma networks from GitHub released network configurations. (#619)
- Ledger/storage: Write values from references. (#627)
- Build: Avoid build context in Docker image builds. (#629)
- Ledger: Add the WASM checksums file for the pre-built transactions and validity predicates to network releases. (#644)
- Ledger: Simplified gas addition code. (#648)
- Ledger: Improved the "wrapper" transaction type data structures and encoding. (#653)
- Ledger: Follow-up to the improved "wrapper" transaction type data structures and encoding. (#655)
- Ledger: Refactored ledger threads usage and made them configurable. (#658)
- Ledger: Updated dependencies names to nix friendly format. (#664)
- Ledger: Follow-up to the updated crate names to nix friendly format. (#666)
- Ledger/client: Set a default fee amount, token, and gas limit for txs. (#667)
- Remove intent gossiper key from configuration file, storing it separately. (#673)
- Refactor historical data storage in rocksdb to store diffs of key changes, and additional database performance changes. (#683)
- Improved nix integration. (#685)
- Ledger/client: Fix the confirmation dialog for using an existing alias and allow to select a new one. (#690)
- Refactor debug printouts in wasm modules to use conditional compilation. (#693)
- Ledger: Updated to wasmer 2.0.1. (#698)
- Allow zero-balance transactions pending proper gas fee deduction. (#700)
- Emit more CPU thread usage information. (#705)
- Tests/E2E: Added PoS tests for bonding and initialization of a validator account on-chain. (#463)