* basic contract work for 'decrease_pledge' functionality note: it doesn't yet return tokens back to the operator * returning extra tokens after decreasing pledge * added vesting message to track pledge decrease * attaching the track message when processing delegation decrease * checking for zero value request * fixed event test * allowing to decrease pledge from the vesting contract * integration test for the feature * reorganised the integration tests * updated nyxd client traits * wallet support * typescript helpers * moved 'pledge more' functionality to operator commands * cli commands for decreasing pledge * changed error variant to make clippy happier * removed unused import * eslint * fixed post-rebase imports * added cargo config * added PendingMixNodeChanges to MixNodeDetails * returning event id after creating it * Streamlined getting mixnode details by identity key * setting pending pledge changes on increase/decrease * clearing the value on resolving the event * checking for correct invariants when clearing events * further pending events unit tests fixes * new unit tests for tx endpoints * queries for pending events (by id) * migration code * using default value for pending changes if unavailable * improved integration test assertions
Nym Mixnet Contract
This is the cosmwasm smart contract which runs the Nym mixnet.
Compiling in development
RUSTFLAGS='-C link-arg=-s' cargo wasm
Production build
Install wasm-opt:
npm i wasm-opt -g
Run make mixnet-opt from the top level Nym directory
CI Support
We have template configurations for both GitHub Actions and Circle CI in the generated project, so you can get up and running with CI right away.
One note is that the CI runs all cargo commands
with --locked to ensure it uses the exact same versions as you have locally. This also means
you must have an up-to-date Cargo.lock file, which is not auto-generated.
The first time you set up the project (or after adding any dep), you should ensure the
Cargo.lock file is updated, so the CI will test properly. This can be done simply by
running cargo check or cargo unit-test.
Using your project
Once you have your custom repo, you should check out Developing to explain more on how to run tests and develop code. Or go through the online tutorial to get a better feel of how to develop.
Publishing contains useful information on how to publish your contract to the world, once you are ready to deploy it on a running blockchain. And Importing contains information about pulling in other contracts or crates that have been published.
Please replace this README file with information about your specific project. You can keep
the Developing.md and Publishing.md files as useful referenced, but please set some
proper description in the README.