- Normalize values going into storage
- Added Shielded resource existence check
- Have the TCP client preform exponential backoff
- Bump the Cairo dependency such that dialyzer does not error
- Fixed a bug where snapshotting would not give a proper error code to the client
- The Erlang node will now phone back to the client when the Snapshot is done, allowing the client to wait until that is finished
- The shielded RM is now merged.
- The event broker is now merged.
- Refactor and reformat various components to comply with the updated style guide.
- Add examples to the CLI modules.
- Store logs by the
encrypt
field rather than the ID. - Store properly type-compliant nouns in logs.
- Correct the representation of shielded proof records.
- Support absent values for deleted keys in storage.
- Support silent CLI operation.
- Support truncated inspection of node transactions.
- Add the Poseidon merkle tree specification to our merkle tree
- Add binding signature verification in Cairo backend
- Resource logic check in the Cairo backend
- When submitting a resource machine transaction, nullifiers and commitments are printed
- Add the ability to check for commitments in the CLi
- Note that one could do this via the RO backend, but that is not ready yet.
- Add the ability to check for nullifiers in the CLi
- Read Only Cli Command
- Fixed a bug where trying to use Juvix transactions would cause nock translation to fail
- Made workers temporary rather than transient
- this keeps the worker from spewing lots of noise on death or trying a restart loop.
- Fixed the encoding of the empty to be 0 in atom transformation
- This causes the failure of jamming transactions typically as [] is typically sent via the round-trip and fail.
- Fix List Nock to Erlang to encode the empty list properly
- Transactions via the CLI are now jammed before being sent over
- This fixes a bug for larger contracts as they would hit the 1 MB transaction limit.
- Add the hash(sha256) of the transparent commitment to storage
- Add the hash(sha256) of the transparent nullifer to storage
- Store the binary representation of the ID in storage
- This is a nock compatible format, and useful when we completely normalize storage
- Made Example Storage not cache
- Fix the Dumper Example randomly dying due to trying to dump the wrong node
- A number of changes were had to make our CLI logic into examples
- Use the Logging Engine in Router and Storage Engines
- Add logging to the TCP Server
- Added the ability to kill an engine
- Adding type signatures to the mempool initiating
- Add a custom transaction data types
- Remove the order data structure
- Added the ability to process jammed transactions
- Reformat the Clock Engine to fit the style guide
- Added a reply to address for workers[1][2]
- Add a shielded transaction data structure
- Moved commitment tree specs out of storage
- better docs path creation
-
Abstract Addresses to be opaque
- This makes addresses much nicer to work with and allows better changes in the future
-
- This is a preview feature, as it does not currently check resource logics, however it does include a test showing it works with a compliance circuit
-
- This is a read only backend. This is not enabled via the CLI yet, but is fully usable.
-
Reformatting the codebase to comply with the style guide
-
Examplifying the codebase
- Fixing the type on getting namespace from storage
- Fix the typing on the identity manager
- They were incorrect and also overly constrained the type
- We did not cover the full type range of adding namespaces
- Pray Macro Improvements
- Add a symbol utility module
- Remove the intent module
- Remove the write at functionality of storage
- We now have a new
debug
mode that makes tests pry on failure! - Resources kinds are now computed with the standard nock jam algorithm
- Nullifiers now use a detatched signature
- The format is now
jam([jammed-nullified-resource detatched-signature])
.- I.E. jamming the resource and signing over the nullified-resource, and jamming both together
- The format is now
- submit-rm client command
- This means that RM backend submissions can be submitted via the cli!
- New rational on testing
- This means we will now focus on providing examples over future
tests. Later work will come to deprecate the old testing
documents, and write new ones about examples instead.
- A big thanks to JExample and Glamorous Toolkit for inspiration.
- This means we will now focus on providing examples over future
tests. Later work will come to deprecate the old testing
documents, and write new ones about examples instead.
- New Style guide covering what every contirbutor must know if they want their changes accepted!!!
- Examples are now in the codebase! [1] [2] [3] [4]
- Not all tests have been converted but the resource and nock files have been with work started on the node as well.
- For the more important documentation changes see the
Major Features
section. - Add documentation on some of the configuration logic
- Fixed random test failure
- This was caused by 2 issues.
- The file name could contain the
\
character - The code would not properly wait for the socket file to be created as it was asynchronous, this was mitigated by making sure the transport responds back
- The file name could contain the
- This was caused by 2 issues.
- Fix bug where the configuration type was improperly typed, made more clear by refactoring
- Bignums can now successfully be sent by our serialization
- Fix double insertion for the same nullifier set
- This bug would occur when we don't scry in a resource transaction, as the check happens for the nullifier doesn't want to see the complete nullifier set.
- Fix a bug where the atom represnetation would change the specifics of jamming
- This would cause some issues in kind calculation depending on where we ran it, causing interesting errors.
- Fix TOC generation
- There were two issues. The first being going up 2 levels caused the TOC to be improperly generated. Worse is that spacing was not considered for the markdown format when numbering got past 10.
- Minor typing improvements [1] [2] [3]
- Minor style improvements
- Freeing up unused code and cleaning out the Node folder
- Pinger now follows CQRS principles
- Minor Code Improvements [1] [2] [3] [4]
- Made functions that start the node take options instead of adhoc arguments [1] [2]
- Made tests respect that they are tests and not overwrite the sockets produced in prod or dev mode
- The socket created by the network test now properly has socket in the name
- Logging now prints messages even without the logging engine
- Fixup the block name in the transport engine tests
- Fixup the path for the dumper in modes that aren't testing
- Add the Transport engine into the router
- This means that we can now message any engine from another engine with a signed message
- Add functionality to Interact with Anoma from the Cli
- This comes in two forms
- Through the burrito binary (currently still a WIP)
- Through mix tasks
- The commands are
get
submit
- shutdown
- snapshot
- delete-dump
- This comes in two forms
- Add a Liscense to the project: MIT
- Remove the suffix _dev, _prod to the anoma home directory (this may change again in the futrue)
- Add a warning message and a command a user should run, if rocksdb grows out of sync
- Configuration files are now loaded on startup and so is the default dump
- Jet binary operations (rsh, lsh, end, met, mix, and bex)
- Add Sign and Verify Jets, along make layer 6 of the Nock standard library
- Add jam and cue jets (implementation in Elixir with backreferences)
- Fix Jets to properly run on atoms. Certain jets would not run on atoms that were backed by a binary value on the VM side
- Fix a bug where the first snapshot was not namespaced, meaning contracts would not run without a hard storage reset
- Replace xxhash with erlang-xxhash due to license reasons
- Add helpers to help calculate the mug of Nock values
- Storage now follows CQRS principles (global state mutation does casts, queries are calls)
- Add child_specs to engines, and allow passthrough options to the kinds of restarts we wish the engines to have
- Better debugging printers for various data types
- Follow XDG conventions for Anoma
- Currently, we use data_home and config_home for Anoma folders
- The folders are based on the mix environment, so having the dev folder will be put in $XDG_DATA_HOME/anoma_dev/
- RocksDB tables are now threaded throughout configuration, being turned on by default in the prod and dev environments
- An initial implementation of Jam is added to the Anoma standard library
- Storage is now properly namspaced by the router's id
- Storage is now an engine rather than a normal database handle
- Documentation release
- Anoma now has make file support
- Docs now have a version for every release. No longer is base's logs only persisted
- Router now has legible names
- Router.call now has infinite timeout
- Storage is now merkelized
- Burrito used instead of escripts for the CLI
- Anoma now has checkpointing
- Fixed a bug with keys<->binary in the nulifier public key
- Remove Node.Storage.Ordering from subscribining to an Mnesia table
- This caused random CI failures as it would get a message it was not prepared for.
- Fix potential race condition of put
- rocksdb now uses the official rocksdb dependency
- We now vendor libsodium
- CI now does not depend on lee-dohm/generate-elixir-docs
- CI streamlining and abstraction
- The pinger can now be stopped
- Minor type fixups around the codebase
- Extra logging
- The Router now has more documentation