Rust implementation of Namada, a sovereign proof-of-stake blockchain that enables asset-agnostic private transfers

Related tags

Cryptography namada
Overview

Namada

License: GPL v3

Overview

Namada is a sovereign proof-of-stake blockchain, using Tendermint BFT consensus, that enables multi-asset private transfers for any native or non-native asset using a multi-asset shielded pool derived from the Sapling circuit. Namada features full IBC protocol support, a natively integrated Ethereum bridge, a modern proof-of-stake system with automatic reward compounding and cubic slashing, and a stake-weighted governance signalling mechanism. Users of shielded transfers are rewarded for their contributions to the privacy set in the form of native protocol tokens. A multi-asset shielded transfer wallet is provided in order to facilitate safe and private user interaction with the protocol.

📓 Docs

Warning

Here lay dragons: this codebase is still experimental, try at your own risk!

💾 Installing

There is a single command to build and install Anoma executables from source (the node, the client and the wallet). This command will also verify that a compatible version of Tendermint is available and if not, attempt to install it. Note that currently at least 16GB RAM is needed to build from source.

make install

After installation, the main anoma executable will be available on path.

To find how to use it, check out the User Guide section of the docs.

If you have Nix, you may opt to build and install Anoma using Nix. The Nix integration also takes care of making a compatible version of Tendermint available.

# Nix 2.4 and later
nix profile install

# All versions of Nix
nix-env -f . -iA anoma

For more detailed instructions and more install options, see the Install section of the User Guide.

⚙️ Development

# Build the provided validity predicate, transaction and matchmaker wasm modules
make build-wasm-scripts-docker

# Development (debug) build Anoma, which includes a validator and some default 
# accounts, whose keys and addresses are available in the wallet
ANOMA_DEV=true make

Using Nix

You may opt to get all of the dependencies to develop Anoma by entering the development shell:

# Nix 2.4 and above
nix develop

# All versions of Nix
nix-shell

Inside the shell, all of the make targets work as usual:

# Build the WASM modules without docker
make build-wasm-scripts

# Development build (uses cargo)
ANOMA_DEV=true make

It is also possible to use the Nix Rust infrastructure instead of Cargo to build the project crates. This method uses crate2nix to derive Nix expressions from Cargo.toml and Cargo.lock files. The workspace members are exposed as packages in flake.nix with a rust_ prefix. Variants where the ABCI-plus-plus feature flag is enabled are exposed with a :ABCI-plus-plus suffix.

# List all packages
nix flake show

# Build the `anoma_apps` crate with `ABCI-plus-plus` feature
nix build .#rust_anoma_apps:ABCI-plus-plus

# Build the (default) anoma package. It consists of wrappers for the Anoma
# binaries (`rust_anoma_apps`) that ensure `tendermint` is in `PATH`.
nix build .#anoma

Advantages:

  • Excellent build reproducibility (all dependencies pinned).
  • Individual crates are stored as Nix derivations and therefore cached in the Nix store.
  • Makes it possible to build Nix derivations of the binaries. Cargo build doesn't work in the Nix build environment because network access is not allowed, meaning that Cargo can't fetch dependencies; cargo vendor could be used to prefetch everything for Cargo, but cargo vendor does not work on our project at the moment.

Disadvantages:

  • Only works for Linux and Darwin targets. WASM builds in particular are not possible with this method. Although, while crate2nix doesn't support targeting WASM, we should be able to build the WASM modules via Cargo - if only cargo vendor worked.

Note: If you have modified the Cargo dependencies (changed Cargo.lock), it is necessary to recreate the Cargo.nix expressions with crate2nix. Helpers are provided as flake apps (Nix 2.4 and later):

nix run .#generateCargoNix
nix run .#generateCargoNixABCI-plus-plus

Before submitting a PR, pls make sure to run the following

# Format the code
make fmt

# Lint the code
make clippy

🧾 Logging

To change the log level, set ANOMA_LOG environment variable to one of:

  • error
  • warn
  • info
  • debug
  • trace

The default is set to info for all the modules, expect for Tendermint ABCI, which has a lot of debug logging.

For more fine-grained logging levels settings, please refer to the tracing subscriber docs for more information.

To switch on logging in tests that use #[test] macro from test_log::test, use RUST_LOG with e.g. RUST_LOG=info cargo test -- --nocapture.

How to contribute

Please see the contributing page.

Dependencies

The ledger currently requires that Tendermint version 0.34.x is installed and available on path. The pre-built binaries and the source for 0.34.8 are here, also directly available in some package managers.

This can be installed by make install command (which runs scripts/install/get_tendermint.sh script).

Comments
  • MASP testnet revisions

    MASP testnet revisions

    Changes in this branch:

    • Altered epoch offsets in the conversion update function
    • Added conversions query command (thanks @murisi)
    • Updated CLI to add --no-conversions flag to print raw balances
    • Minor CLI internal cleanup / code deduplication
    opened by cwgoes 18
  • Draft branch for 0.7 cycle

    Draft branch for 0.7 cycle

    based on #351

    currently includes (checked if ready to graduate):

    • [x] #240
    • [x] #254
    • [x] #255
    • [x] #256
    • [x] #258
    • [x] #259
    • [x] #262
    • [x] #263
    • [x] #264
    • [x] #270
    • [x] #277
    • [x] #278
    • [x] #279
    • [x] #290
    • [x] #291
    • [x] #311
    • [x] #318
    • [x] #319
    • [x] #320
    • [x] #324
    • [x] #325
    • [x] #326
    • [x] #331
    • [x] #334
    • [x] #335
    • [x] #337
    • [x] #380
    • [x] #384
    • [x] #359
    • [x] #465
    • [x] #458
    • [x] #500
    • [x] #501
    • [x] #503
    • [x] #452
    draft branch integration branch 
    opened by tzemanovic 17
  • Update storage and mint new wrapped ERC20s for a single validator node

    Update storage and mint new wrapped ERC20s for a single validator node

    Closes https://github.com/anoma/namada/issues/144

    Closes https://github.com/anoma/namada/issues/140

    This PR makes it so that we apply a derived tx whenever we apply a ProtocolTxType::EthereumEvents. This derived tx:

    • for each event, writes the event to storage if it is the first time is being seen
    • for any TransferToNamada event which becomes seen, mints wrapped ERC20s

    This PR is implementing the previous design of the Ethereum bridge where we would have had vote extensions.

    For this PR, Ethereum updates are only written to storage and acted upon the first time they are seen. In the degenerate case of a chain with a single validator this works, as the validator has 100% of the voting power so Ethereum events are always acted upon as soon as they are seen. Making the state update transaction work across multiple rounds and with multiple validators (https://github.com/anoma/namada/issues/197) will come in a later PR.

    ethereum-bridge 
    opened by james-chf 14
  • Shim vote extensions for Tendermint 0.37.x

    Shim vote extensions for Tendermint 0.37.x

    Implements the fifth item of issue https://github.com/anoma/namada/issues/242

    With the abcipp feature flag enabled, test this PR with this Tendermint version: https://github.com/heliaxdev/tendermint/releases/tag/v0.1.1-abcipp

    Otherwise, use this version: https://github.com/tendermint/tendermint/tree/0b58342a46b1917a40d506e48e87448dcc8b3131


    Note: Either websockets rpc code, or the pubsub layer in Tendermint are broken, so client transfers performed with namadac may hang indefinitely, and e2e tests are definitely broken because of them.

    ethereum-bridge 
    opened by sug0 8
  • faucet PoW

    faucet PoW

    closes #959

    depends on #926 for storage keys macro, #966 for avoiding lifetime issues and #962 for tx fees

    first commit from this PR: f7b6378

    This is a breaking change for client - to be able to withdraw from token, client must request PoW challenge from the faucet, solve it and submit tx_testnet_faucet_transfer.wasm tx instead of tx_transfer.wasm.

    This is non-breaking change for genesis as the added faucet_pow_difficulty is optional (defaults to 0 - no challenge).

    TODOs:

    • [x] integrate in vp_faucet
    • [x] initialize faucet account with difficulty if used in init_chain.rs
    • [x] set faucet_pow_difficulty from genesis
    • [x] add a tx_faucet_transfer wasm to send token::Transfer wrapped in faucet::Solution and increment counter
    • [x] add RPC endpoint to obtain faucet challenge for a token::Transfer
    • [x] integrate in the client transfer command (detect faucet source)
    • [x] allow to configure faucet withdrawal limit from genesis
    • [ ] add the PoW into the wrapper tx (with conditional compilation when not(mainnet) to allow fee-less tx (with minimum tx fees from #962)
    breaking:client 
    opened by tzemanovic 7
  • Bridge pool cli

    Bridge pool cli

    This PR partially closes #425. It depends on #715. It sets up CLI commands for the following:

    • Adding a new transfer to the bridge pool
    • Querying the current contents of the pool
    • Getting a merkle proof of a selected set of transfers

    It also generates a new binary, namadar which can handle these tasks. Eventually, this binary should become a more robust relayer. It refactors the queries in the shell a bit for better UX.

    This is not covered by tests yet as this PR is large enough. The wasm code needs to be updated and then we can test. That will be the next PR.

    opened by batconjurer 7
  • Bridge pool merkle tree

    Bridge pool merkle tree

    This PR partially closes #420. It adds a merkle tree that will be used for the bridge pool. It also refactors the merkle tree storage to better accomodate multiple types of merkle trees in a uniform way (based off of PR #547 ).

    This PR will depend on merging in #547 and #549 once they are approved for main.

    This PR does not actually change the vp or wasm code, so the bridge pool is still help under the accounts sub-storage for now. This will be addressed in a subsequent PR.

    opened by batconjurer 7
  • Validator commission rates

    Validator commission rates

    Closes #696.

    Based on v0.9.0 and #436, #687, spun out from #388.

    Includes initializing validators with a commission rate and a maximum allowed change in the commission rate per epoch (immutable once initialized). Also includes a validator PoS tx to change the commission rate and client query for a validator's rate.

    Possible to do:

    • Inlcude existing commission rate change tx as a possible transition in pos vp state machine test
    ledger PoS merged to draft breaking:genesis breaking:cli 
    opened by brentstone 6
  • Make the Ethereum events oracle configurable via a channel

    Make the Ethereum events oracle configurable via a channel

    Relates to https://github.com/anoma/namada/issues/686

    This PR makes it so that:

    • the Oracle requires the receive half of a command channel to be passed in when it is created
    • the Oracle doesn't do anything until it has received an SendConfig { config } command over this channel

    The next PR will pass the send half of the command channel to the Shell, which should send a SendConfig { config } command based on values in storage

    ethereum-bridge 
    opened by james-chf 6
  • Murisi/masp history split

    Murisi/masp history split

    moved from https://github.com/anoma/anoma/pull/1234, rebased on #351

    The MASP client and incentive integration work. Contained features:

    • Multi asset shielded/shielding/unshielding transactions and balance checks
    • Wallet support for spending keys, viewing keys, payment addresses, and pinned payment addresses
    • Burn and mint for shielded assets allowing rewards to be received for shielded funds
    • One time payment addresses enabling transaction scanning to be skipped
    • Gas payments originating from shielded pool
    • Historical transparent and shielded transaction viewing
    opened by tzemanovic 6
  • Implement a bit set to store PrepareProposal tx indices

    Implement a bit set to store PrepareProposal tx indices

    Based on #791

    Implementation of a lazy bitset, to store tx indices that have already been considered for inclusion in a block. This will be used to infer which txs can be included in a block, after the BlockSpaceAllocator transitions to its last state.


    EDIT: Drafted for removal. The implementation now lives here: https://github.com/heliaxdev/index-set

    ledger ethereum-bridge 
    opened by sug0 5
  • testnet PoW

    testnet PoW

    This is alternative approach to #961, re-using most of the logic from faucet_pow module, but instead of adding a special tx for faucet withdrawal (the inner tx) to be executed and checked as an inner tx, we add an option PoW field to the WrapperTx (#[cfg(not(feature = "mainnet"))] pow_solution: Option<crate::ledger::testnet_pow::Solution>). This is needed because the fee needs to be checked in the mempool at which point we don't have access to the inner tx.

    • added "mainnet" feature (with make check-mainnet, make clippy-mainnet and make test-unit-mainnet) - for the "mainnet" build, the WrapperTx doesn't contain the pow_solution field)
    • added a check to client/signing sign_wrapper that the address derived from wrapper tx PK has enough balance to pay the minimum tx fee (100 namnam)
    • only in cfg!(not(feature = "mainnet")):
      • added faucet_pow_difficulty (optional, defaults 0 PoW difficulty if not set) and faucet_withdrawal_limit (optional, defaults 1000 NAM) fields to genesis
      • when a tx is withdrawal from faucet, the client automatically requests PoW challenge, attempts to find a solution and attach it to the wrapper tx
      • when an address derived from wrapper tx PK doesn't have enough balance to pay for the tx fee (100 namnam), it will also automatically request PoW challenge, attempt to find a solution and attach it to the wrapper tx
      • added faucet_account to ledger::Parameters - this is set in init_chain when a faucet account is detected in genesis

    closes https://github.com/anoma/namada/issues/959

    depends on https://github.com/anoma/namada/pull/926 for storage keys macro, https://github.com/anoma/namada/pull/966 for avoiding lifetime issues and https://github.com/anoma/namada/pull/962 for tx fees

    first commit from this PR: f7b6378

    This is a breaking change for client - to be able to withdraw tokens from faucet without having enough balance in the signing key to cover the minimum tx fee (set in #962 to 100 namnam), client must request PoW challenge from the faucet, solve it and attach it to the wrapper tx (@memasdeligeorgakis - not sure if we want to support faucet withdrawal in the interface, but it will need to do this if so).

    This is non-breaking change for genesis as the added faucet_pow_difficulty is optional (defaults to 0 - no challenge), and faucet_withdrawal_limit.

    breaking:client 
    opened by tzemanovic 3
  • Fix validator commission change wasm test

    Fix validator commission change wasm test

    Resolving the wasm test error seen in https://github.com/anoma/namada/pull/926#issuecomment-1363805447. This was due to an arbitrary value for a new commission rate that was the same as the previous rate, which threw an error from within PosActions::change_validator_commission_rate.

    The arb values for a new rate within tx_change_validator_commission.rs are now prevented from being the same as the previous rate.

    Additionally, the previous ChangeIsZero error is removed, and if a tx to change the commission rate to the same as the previous one is submitted, the code instead returns early rather than attempt to make storage changes. Commit 159001e can be removed if we prefer to keep the ChangeIsZero error.

    opened by brentstone 0
  • my node gradually loses peers

    my node gradually loses peers

    Thank you for the bug report. Please provide any information that may be relevant to the issue you're experiencing.

    my node gradually loses peers during the day and then the p2p module just endlessly looks for peers. only reboot helps

    root@linux ~ # sudo journalctl -u namadad -f -o cat I[2022-12-24|15:34:44.499] Ensure peers module=pex numOutPeers=0 numInPeers=0 numDialing=0 numToDial=10 I[2022-12-24|15:34:44.500] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:34:44.500] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:35:14.500] Ensure peers module=pex numOutPeers=0 numInPeers=0 numDialing=0 numToDial=10 I[2022-12-24|15:35:44.499] Ensure peers module=pex numOutPeers=0 numInPeers=0 numDialing=0 numToDial=10 I[2022-12-24|15:36:14.494] Saving AddrBook to file module=p2p book=/root/.namada/public-testnet-1.0.05ab4adb9db/tendermint/config/addrbook.json size=28 I[2022-12-24|15:36:14.500] Ensure peers module=pex numOutPeers=0 numInPeers=0 numDialing=0 numToDial=10 I[2022-12-24|15:36:14.516] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:14.516] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:14.578] Reconnecting to peer module=p2p [email protected]:26656 ^[[A^[[A^C root@linux ~ # sudo systemctl restart namadad && sudo journalctl -u namadad -f -o cat I[2022-12-24|15:36:44.499] Dialing peer module=p2p [email protected]:26656 Stopping namada... 2022-12-24T14:36:48.041188Z INFO namada_apps::node::ledger::abortable: Received termination signal, exiting... 2022-12-24T14:36:48.041474Z INFO namada_apps::node::ledger::tendermint_node: Shutting down Tendermint node... 2022-12-24T14:36:48.098877Z INFO namada_apps::node::ledger: Tendermint node is no longer running. 2022-12-24T14:36:48.098886Z INFO namada_apps::node::ledger: Shutting down ABCI server... 2022-12-24T14:36:48.098920Z INFO namada_apps::node::ledger: Namada ledger node has shut down. namadad.service: Succeeded. Stopped namada. Started namada. 2022-12-24T14:36:49.308062Z INFO namada_apps::cli::context: Chain ID: public-testnet-1.0.05ab4adb9db 2022-12-24T14:36:49.329823Z INFO namada_apps::node::ledger: Available logical cores: 12 2022-12-24T14:36:49.329830Z INFO namada_apps::node::ledger: Using 6 threads for Rayon. 2022-12-24T14:36:49.329832Z INFO namada_apps::node::ledger: Using 6 threads for Tokio. 2022-12-24T14:36:49.332160Z INFO namada_apps::node::ledger: VP WASM compilation cache size not configured, using 1/6 of available memory. 2022-12-24T14:36:49.550371Z INFO namada_apps::node::ledger: Available memory: 62.76 GiB 2022-12-24T14:36:49.550399Z INFO namada_apps::node::ledger: VP WASM compilation cache size: 10.46 GiB 2022-12-24T14:36:49.550403Z INFO namada_apps::node::ledger: Tx WASM compilation cache size not configured, using 1/6 of available memory. 2022-12-24T14:36:49.550406Z INFO namada_apps::node::ledger: Tx WASM compilation cache size: 10.46 GiB 2022-12-24T14:36:49.550409Z INFO namada_apps::node::ledger: Block cache size not configured, using 1/3 of available memory. 2022-12-24T14:36:49.550412Z INFO namada_apps::node::ledger: RocksDB block cache size: 20.92 GiB 2022-12-24T14:36:49.576085Z INFO namada_apps::node::ledger::storage::rocksdb: Using 3 compactions threads for RocksDB. 2022-12-24T14:36:49.576272Z DEBUG namada_apps::node::ledger::storage::rocksdb::imp: Current NOFILE limit, soft=65535, hard=65535 2022-12-24T14:36:49.576276Z DEBUG namada_apps::node::ledger::storage::rocksdb::imp: NOFILE limit already large enough, not attempting to increase 2022-12-24T14:36:49.581218Z INFO namada_apps::node::ledger::tendermint_node: Tendermint node started 2022-12-24T14:36:49.695857Z DEBUG namada_core::ledger::storage: storage read key #atest1v4ehgw36xaryysfsx5unvve4g5my2vjz89p52sjxxgenzd348yuyyv3hg3pnjs35g5unvde4ca36y5/conv I[2022-12-24|15:36:49.811] service start module=proxy msg="Starting multiAppConn service" impl=multiAppConn I[2022-12-24|15:36:49.811] service start module=abci-client connection=query msg="Starting socketClient service" impl=socketClient E[2022-12-24|15:36:49.811] abci.socketClient failed to connect to 127.0.0.1:26658. Retrying after 3s... module=abci-client connection=query err="dial tcp 127.0.0.1:26658: connect: connection refused" 2022-12-24T14:36:49.821327Z DEBUG namada_core::ledger::storage: Loaded storage from DB 2022-12-24T14:36:49.821493Z INFO namada_apps::node::ledger: Namada ledger node started. 2022-12-24T14:36:49.821514Z INFO namada_apps::node::ledger: This node is not a validator I[2022-12-24|15:36:52.812] service start module=abci-client connection=snapshot msg="Starting socketClient service" impl=socketClient I[2022-12-24|15:36:52.812] service start module=abci-client connection=mempool msg="Starting socketClient service" impl=socketClient I[2022-12-24|15:36:52.812] service start module=abci-client connection=consensus msg="Starting socketClient service" impl=socketClient I[2022-12-24|15:36:52.812] service start module=events msg="Starting EventBus service" impl=EventBus I[2022-12-24|15:36:52.812] service start module=pubsub msg="Starting PubSub service" impl=PubSub I[2022-12-24|15:36:52.967] service start module=txindex msg="Starting IndexerService service" impl=IndexerService 2022-12-24T14:36:52.967202Z DEBUG tower::buffer::worker: service.ready=true processing request 2022-12-24T14:36:52.967283Z INFO namada_apps::node::ledger::shell: Last state root hash: 435fde477ea3709402a57433c366485f18df8f63722a20f91f6cf827e13f7566, height: 11694 I[2022-12-24|15:36:52.967] ABCI Handshake App Info module=consensus height=11694 hash=435FDE477EA3709402A57433C366485F18DF8F63722A20F91F6CF827E13F7566 software-version= protocol-version=0 I[2022-12-24|15:36:52.967] ABCI Replay Blocks module=consensus appHeight=11694 storeHeight=11694 stateHeight=11693 I[2022-12-24|15:36:52.967] Replay last block using mock app module=consensus I[2022-12-24|15:36:53.069] executed block module=consensus height=11694 num_valid_txs=102 num_invalid_txs=0 I[2022-12-24|15:36:53.074] committed state module=consensus height=11694 num_txs=102 app_hash=435FDE477EA3709402A57433C366485F18DF8F63722A20F91F6CF827E13F7566 I[2022-12-24|15:36:53.121] Completed ABCI Handshake - Tendermint and App are synced module=consensus appHeight=11694 appHash=435FDE477EA3709402A57433C366485F18DF8F63722A20F91F6CF827E13F7566 I[2022-12-24|15:36:53.121] Version info module=main tendermint_version=v0.1.4-abciplus block=11 p2p=8 I[2022-12-24|15:36:53.121] This node is a validator module=consensus addr=941E042F17B4EBC038F57B6E65AFD31B7D489C51 pubKey=PubKeyEd25519{2A750D5DBEE076FB4D5332E877E51A7FE2A35389754EBEF33A2CA01971C6FCFD} I[2022-12-24|15:36:53.128] indexed block module=txindex height=11694 I[2022-12-24|15:36:53.152] P2P Node ID module=p2p ID=a74b1eb7bf31242419af2e1a0d6f42e97d574a71 file=/root/.namada/public-testnet-1.0.05ab4adb9db/tendermint/config/node_key.json I[2022-12-24|15:36:53.152] Adding persistent peers module=p2p addrs="[tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656 tcp://[email protected]:26656]" I[2022-12-24|15:36:53.152] Adding unconditional peer ids module=p2p ids=[] I[2022-12-24|15:36:53.152] Add our address to book module=p2p book=/root/.namada/public-testnet-1.0.05ab4adb9db/tendermint/config/addrbook.json [email protected]:26656 I[2022-12-24|15:36:53.152] service start module=main msg="Starting Node service" impl=Node I[2022-12-24|15:36:53.152] service start module=p2p msg="Starting P2P Switch service" impl="P2P Switch" I[2022-12-24|15:36:53.152] service start module=blockchain msg="Starting Reactor service" impl=Reactor I[2022-12-24|15:36:53.152] service start module=blockchain msg="Starting BlockPool service" impl=BlockPool I[2022-12-24|15:36:53.152] service start module=consensus msg="Starting Consensus service" impl=ConsensusReactor I[2022-12-24|15:36:53.152] serve module=rpc-server msg="Starting RPC HTTP server on 127.0.0.1:26657" I[2022-12-24|15:36:53.152] Reactor module=consensus waitSync=true I[2022-12-24|15:36:53.152] service start module=evidence msg="Starting Evidence service" impl=Evidence I[2022-12-24|15:36:53.152] service start module=statesync msg="Starting StateSync service" impl=StateSync I[2022-12-24|15:36:53.152] service start module=pex msg="Starting PEX service" impl=PEX I[2022-12-24|15:36:53.152] service start module=p2p book=/root/.namada/public-testnet-1.0.05ab4adb9db/tendermint/config/addrbook.json msg="Starting AddrBook service" impl=AddrBook I[2022-12-24|15:36:53.153] Saving AddrBook to file module=p2p book=/root/.namada/public-testnet-1.0.05ab4adb9db/tendermint/config/addrbook.json size=28 I[2022-12-24|15:36:53.153] Ensure peers module=pex numOutPeers=0 numInPeers=0 numDialing=0 numToDial=10 I[2022-12-24|15:36:53.160] Started node module=main nodeInfo="{ProtocolVersion:{P2P:8 Block:11 App:0} DefaultNodeID:a74b1eb7bf31242419af2e1a0d6f42e97d574a71 ListenAddr:tcp://0.0.0.0:26656 Network:public-testnet-1.0.05ab4adb9db Version:v0.1.4-abciplus Channels:40202122233038606100 Moniker:linux Other:{TxIndex:on RPCAddress:tcp://127.0.0.1:26657}}" I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.160] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:36:53.299] service start module=p2p [email protected]:26656 msg="Starting Peer service" impl="Peer{MConn{188.166.202.55:26656} 6a802c5cfa138649a513e5e55a7766c82cc0cf45 out}" I[2022-12-24|15:36:53.299] service start module=p2p [email protected]:26656 msg="Starting MConnection service" impl=MConn{188.166.202.55:26656}

    and after 2 minutes

    I[2022-12-24|15:57:51.742] indexed block module=txindex height=11817 I[2022-12-24|15:57:52.146] Error reconnecting to peer. Trying again module=p2p tries=6 err="dial tcp 34.159.27.16:26656: i/o timeout" [email protected]:26656 I[2022-12-24|15:57:53.160] Ensure peers module=pex numOutPeers=10 numInPeers=1 numDialing=0 numToDial=0 I[2022-12-24|15:57:58.279] Timed out module=consensus dur=6.544006674s height=11818 round=0 step=RoundStepNewHeight I[2022-12-24|15:57:59.377] received proposal module=consensus proposal="Proposal{11818/0 (FF0657AAACD32F756152117B77B6BB0EFA8AB00D3367746304A9A3F94DF82AFB:297:DD4F747E5A4C, -1) 231826085B7E @ 2022-12-24T14:57:58.914324983Z}" I[2022-12-24|15:58:00.693] Dialing peer module=p2p [email protected]:26656 I[2022-12-24|15:58:01.280] Timed out module=consensus dur=3s height=11818 round=0 step=RoundStepPropose I[2022-12-24|15:58:01.693] Error reconnecting to peer. Trying again module=p2p tries=6 err="dial tcp 34.159.225.73:26656: i/o timeout" [email protected]:26656 I[2022-12-24|15:58:03.218] Timed out module=consensus dur=1s height=11818 round=0 step=RoundStepPrecommitWait I[2022-12-24|15:58:03.700] received proposal module=consensus proposal="Proposal{11818/1 (884028FD11E1FA26A1E6FCC3CDD24E6C5C53E1668481EF1F5E27CB164BB4801F:252:ACC47D40E5F5, -1) EDFBF03C2EC4 @ 2022-12-24T14:58:03.520984761Z}" I[2022-12-24|15:58:06.718] Timed out module=consensus dur=3.5s height=11818 round=1 step=RoundStepPropose I[2022-12-24|15:58:07.095] received complete proposal block module=consensus height=11818 hash=884028FD11E1FA26A1E6FCC3CDD24E6C5C53E1668481EF1F5E27CB164BB4801F

    bug 
    opened by encipher88 1
Releases(v0.12.2)
  • v0.12.2(Dec 22, 2022)

    Namada 0.12.2 is a hotfix release, limiting transactions included in a block by size.

    BUG FIXES

    • Limit block space to under Tendermint's limit, and limit transactions included in a block by their size. (#952)

    MISCELLANEOUS

    • Don't attempt to include matchmaker DLLs, which no longer exist, in release packages. (#943)
    • Include license information in release binary tarballs. (#945)
    Source code(tar.gz)
    Source code(zip)
    namada-v0.12.2-Darwin-x86_64.tar.gz(24.02 MB)
    namada-v0.12.2-Linux-x86_64.tar.gz(26.28 MB)
  • v0.12.1(Dec 21, 2022)

  • v0.12.0(Dec 13, 2022)

    Namada 0.12.0 is a scheduled minor release.

    Tendermint

    Docker

    CI

    • Run make check-abcipp in CI (#824)
    • Run Ethereum bridge CI against more branches (#834)

    DOCS

    • Adds specs for replay protection (#440)
    • Adds specs for multisig accounts (#680)

    IMPROVEMENTS

    • 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)

    TESTING

    • Allow size zero bonds in PoS for testing. (#813)
    Source code(tar.gz)
    Source code(zip)
    namada-v0.12.0-Darwin-x86_64.tar.gz(23.94 MB)
    namada-v0.12.0-Linux-x86_64.tar.gz(26.22 MB)
  • v0.11.0(Dec 1, 2022)

    Namada 0.11.0 is a scheduled minor release.

    BUG FIXES

    • Fix building with the abcipp feature again (#754)
    • Fixed validation of a validator initialization transaction. (#763)

    FEATURES

    • 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)

    IMPROVEMENTS

    • 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 a namada_core crate. The namada_proof_of_stake, namada_vp_prelude and namada_tx_prelude crates now depend on this namada_core crate. (#733)
    • Sign over the hash of code rather than code in transaction signing. (#807)

    MISCELLANEOUS

    • Improve some docstrings relating to block heights (#650)

    TESTING

    • Don't fake a wasm VP for internal addresses in tx tests (#694)
    Source code(tar.gz)
    Source code(zip)
    namada-v0.11.0-Darwin-x86_64.tar.gz(23.97 MB)
    namada-v0.11.0-Linux-x86_64.tar.gz(26.21 MB)
  • v0.10.1(Nov 21, 2022)

  • v0.10.0(Nov 15, 2022)

    Namada 0.10.0 is a scheduled minor release, focused on IBC and MASP integrations.

    BUG FIXES

    • 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)

    FEATURES

    • Add client command 'ibc-transfer'. (#626)
    • Added MASP client and wallet functionality. Added new command to view transfer history. (#1234)
    Source code(tar.gz)
    Source code(zip)
    namada-v0.10.0-Darwin-x86_64.tar.gz(24.20 MB)
    namada-v0.10.0-Linux-x86_64.tar.gz(26.36 MB)
  • v0.9.0(Oct 31, 2022)

    Namada 0.9.0 is a scheduled minor release.

    BUG FIXES

    • Add back consensus commit timeout configuration set in tendermint (#671)
    • Fix info logs to show by default for namadan (#702)

    FEATURES

    • Client: Add a command to query the last committed block's hash, height and timestamp. (#658)

    IMPROVEMENTS

    • 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)

    MISCELLANEOUS

    • Renamed native token from XAN to NAM (#632)
    Source code(tar.gz)
    Source code(zip)
    namada-v0.9.0-Darwin-x86_64.tar.gz(21.71 MB)
    namada-v0.9.0-Linux-x86_64.tar.gz(23.68 MB)
  • v0.8.1(Oct 20, 2022)

  • v0.8.0(Oct 17, 2022)

    Namada 0.8.0 is a regular minor release.

    BUG FIXES

    • 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)

    FEATURES

    • Added multitoken transfer and query for bridges (#132)
    • Added lazy vector and map data structures for ledger storage (#503)

    IMPROVEMENTS

    • 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 into trait VpEnv that return objects implementing trait StorageRead for re-use of library code written on top of StorageRead 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 in VpEnv and TxEnv 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 under trait 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)

    MISCELLANEOUS

    • 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)

    TESTING

    • 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)
    Source code(tar.gz)
    Source code(zip)
    namada-v0.8.0-Darwin-x86_64.tar.gz(18.95 MB)
    namada-v0.8.0-Linux-x86_64.tar.gz(21.26 MB)
  • v0.7.1(Aug 21, 2022)

    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.

    CI

    • New CI using Github Actions (#222)

    DOCS

    • 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)

    FEATURES

    • Added secp256k1 support (#278)

    IMPROVEMENTS

    • 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)

    MISCELLANEOUS

    • Make some .gitignore patterns relative to repo root (#1158)

    TESTING

    • E2E: Consume unread output before checking exit status. (#247)
    • Switch back from a fork to a newly released version of expectrl (#1142)
    Source code(tar.gz)
    Source code(zip)
Owner
anoma
An intent-centric, privacy-preserving protocol for decentralized counterparty discovery, solving, and multi-chain atomic settlement.
anoma
An extensible open-source framework for creating private/permissioned blockchain applications

Exonum Status: Project info: Community: Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to crea

Exonum 1.2k Jan 1, 2023
gRPC client/server for zero-knowledge proof authentication Chaum Pederson Zero-Knowledge Proof in Rust

gRPC client/server for zero-knowledge proof authentication Chaum Pederson Zero-Knowledge Proof in Rust. Chaum Pederson is a zero-knowledge proof proto

Advaita Saha 4 Jun 12, 2023
An open source, high performance limit order book for the Seaport smart contracts. Implemented in Rust using ethers-rs, this offers a turnkey option for digital asset marketplaces.

Quay Quay is an open source, high performance backend for the Seaport smart contracts. The project is implemented in Rust, using Postgres as a storage

Valorem Labs Inc. 169 Jun 23, 2023
Cross-chain hub for Crypto Asset on Polkadot

ChainX ChainX is a community-driven project built on the next-generation blockchain framework substrate, the largest Layer-2 network of Bitcoin using

ChainX 261 Dec 28, 2022
A substrate pallet that enables Manta's decentialized anynonymous payment (DAP) protocol.

This is a pallet that enables decentialized anynonymous payment (DAP) protocol. The best way to use this repo is to invoke it with a manta-runtime, available from either manta-node or cumulus.

Manta Network 27 Nov 23, 2022
Biddi Network enables custom p2p swaps in Solana ocean 🌊.

Peer to peer, decentralized protocol which allow direct swaps between 2 network participants for custom tokens without liquidity pools on Solana blockchain.

Biddi Network 2 Nov 1, 2022
Implementation of Proof of Existence consensus using Substrate Framework, Frame, Pallets, RUST

Substrate Node Template A fresh FRAME-based Substrate node, ready for hacking ?? Getting Started Follow the steps below to get started with the Node T

Vijayendra Gaur 1 Jun 8, 2022
Proof of concept implementation of ProtoGalaxy

protogalaxy-poc Proof of concept implementation of ProtoGalaxy (https://eprint.iacr.org/2023/1106.pdf) using arkworks. Experimental code, do not use i

null 30 Aug 13, 2023
Proof of concept implementation of Sigmabus

sigmabus-poc Proof of concept implementation of Sigmabus https://eprint.iacr.org/2023/1406, a cool idea by George Kadianakis and Mary Maller and Andri

arnaucube 5 Sep 30, 2023
Implementation of zero-knowledge proof circuits for Tendermint.

Tendermint X Implementation of zero-knowledge proof circuits for Tendermint. Overview Tendermint X's core contract is TendermintX, which stores the he

Succinct 3 Nov 8, 2023
Convert private keys to PKCS#8 format in pure Rust

topk8 Convert private keys to PKCS#8 format in pure Rust. The following formats are supported at the moment: PKCS#1 PEM (RSA PRIVATE KEY) SEC1 PEM (EC

kazk 1 Dec 10, 2021
Add Rust on private-isu

private-isu Rust実装 private-isuにRust実装を追加するためのリポジトリです. 現状,Docker Composeのみ対応しています. Using Rustで起動するためには以下の手順が必要です. private-isuのwebappに本リポジトリを追加する. cd pr

Romira 3 Jun 22, 2022
Kryptokrona SDK in Rust for building decentralized private communication and payment systems.

Kryptokrona Rust SDK Kryptokrona is a decentralized blockchain from the Nordic based on CryptoNote, which forms the basis for Monero, among others. Cr

null 5 May 25, 2023
Private payments for mobile devices.

MobileCoin Fog This is the README file for MobileCoin Fog. Note to Developers MobileCoin Fog is a prototype. Expect substantial changes before and aft

MobileCoin Foundation 36 May 6, 2022
✈️A private, authenticated, permissioned cargo registry

chartered a little dig at creating a private cargo repository with authenticated downloads, the plan is to have git connect to a git server we setup t

Jordan Doyle 121 Dec 26, 2022
Private payments for mobile devices.

Testing your first payment Please see TESTNET.md for instructions on participating in the TestNet! Sending your first payment Please see MAINNET.md fo

MobileCoin Foundation 1.1k Dec 30, 2022
a Solana program for granting friends permissions on your account without revealing your private key.

Delegatooooor Granting Permission: An account holder (the delegator) decides to grant permission to a delegate. They create and sign a transaction tha

0xGhostMac 3 Apr 3, 2024
Rust implementation of the Inter-Blockchain Communication (IBC) protocol.

ibc-rs Rust implementation of the Inter-Blockchain Communication (IBC) protocol. This project hosts the ibc rust crate which defines the main data str

COSMOS 37 Dec 26, 2022
Node implementation for aleph blockchain built with Substrate framework

This repository contains the Rust implementation of Aleph Zero blockchain node based on the Substrate framework. Aleph Zero is an open-source layer 1

Aleph Zero Foundation 55 Dec 15, 2022