sdk-monorepo/HISTORY.md

8.7 KiB

History

0.0.13-alpha

  • Default block delta for synchronization has been set to 1,024 but there is no upper limit, any longer.
  • Add the possibility of making the transaction build such that deposits go directly through the instances. This is off by default.
  • Some code commenting.

0.0.12-alpha

NOTE: this is a minor breaking version, I'm making it minor on purpose to keep versioning low.

  • Add an optional (meaning you have to add it yourself) @tornado/sdk-registry package which (only) syncs registry events (for now).
  • Caches can now be also exported as JSON (but not imported yet).
  • Code quality again.
  • Other changes are minor or minor function additions.

0.0.11-alpha

NOTE: this is a minor breaking version, I'm making it minor on purpose to keep versioning low.

  • Use the latest fixed-merkle-tree version, which is a CJS module with declarations.
  • Fetch all docs from a cache with getRows instead of the ugly old loadContents.
  • Core function name changes from the misleading build's into create's.
  • Simpler cache zipping, zips to .tar.gz now.
  • Load from zip, automatically detected, must be .tar.gz prefixed.
  • Code quality improvements.

0.0.7-alpha, 0.0.8-alpha

"Stable" releases, even though inherently experimental.

For 0.0.8-alpha:

  • Caches can now be exported (to zip format).
  • Code quality.

0.0.0-alpha, 0.0.1-alpha

This is to be considered the first alpha release before production tests. Last few days have been troublesome and for this reason later update pushed. API docs are barebones but they exist.

2023.04.28 (2023-04-28)

Did:

  • Had to run those "few more tests". Finally done with those, there was a promise not being resolved which ended up being test listeners. Noted.
  • Synchronization is now abstracted into the inheritable Synchronizer which will be reused for different things, for example relayer registry operations next.

Next:

  • MONOREPO!!!!!!!!!!!!!!! STARTING TODAY

2023.04.23 (2023-04-23)

Did:

  • Single withdrawals working, this means multiple ones are also a given but need to test.
  • Event emitting, core is an event emitter such that implementors will have an easier time using it.
  • Relayer also works I guess but sometimes refuses connection?

Next:

  • Clean up / create / add scripts for inspecting and synchronizing cache since doing over tests is horrible.
  • Need a few more tests but we can move on to monorepo finally!!!!

2023.04.20 (2023-04-20)

Did:

  • Syncing is now stable.
  • Reorganized some stuff including resources.

Next:

  • Still testing withdraws, will do some relayer and then monorepo :] (finally excited about something again)

2023.04.18 (2023-04-18)

Did:

  • Trying to test withdrawals. The issue is that the ganache provider seemingly can't provide data on events via queryFilter. Have manually inserted events, commitments seem to pass but the note is deemed invalid by the contract on forknet.
  • Tests are more complicated right now, they rely on synchronized caches. Per default, all but that withdraw one should pass.
  • The good news is, if we pass the withdraw test, then we almost have the hardest part done.

Next:

  • Need to reorganize into monorepo.

2023.04.12 (2023-04-12)

Did:

  • TorHttpClient, RegularHttpClient and some tests.
  • Working on Relayer, withdrawing.
  • Crypto logic for withdrawals.

Next:

  • Finish withdrawal logic.
  • Censorship test on RPC.

2023.04.09 (2023-04-09)

Did:

  • All deposits working now, meaning buildDepositTxs works. Batching cannot technically happen, due to the impossibility of approving for a MultiCall (without getting robbed). We should be able to allow batching withdrawals for relayers though.
  • We can use a TorProvider now, which is to be used for privacy and running future implementations behind Tor.
  • EXPORTS ARE HERE, check index.ts, you can now actually start using this SDK although very experimental.

Next:

  • Keep on working.

2023.04.06 (2023-04-06)

Did:

  • Code quality, notes being backed up in cache with fetched events.
  • Single ETH/token deposits seemingly working (need to test withdraw).
  • Testing, resources.

Next:

  • Need to fix batch multicall (need to see why the call isn't working, if it gets bad I'll do testnet).
  • After that, create censor checks for rpc's and a class which auto-checks this (the "FreedomProvider").

2023.04.03 (2023-04-03)

Did:

  • Enhanced code quality majorly, cleaned up logic bloat on sync and defined types better.
  • Started writing deposit code, tested some crypto functions.
  • Added dependencies to NPM.

Next:

  • We need to implement a function which allows deposits to be batched into one function call. (almost there)
  • Need to test listening for txs in a separate test by using forknet. Let's see whether I can use hardhat network to stay minimal without having to switch over using the entire SDK or something.
  • Need to see how to properly call the deposit functions, and whether it can even be done, in combination with multicall.

2023.04.01 (2023-04-01)

Did:

  • Tornado.Engines.Classic.sync can now properly synchronize and store all events in a persistent PouchDB database.
  • Maybe last "Did" note was confusing, today we cleaned everything up and have a well working implementation.
  • Reorganize namespaces in main.ts
  • Right, also the non-persitent case was already implemented by just using database memory mode...
  • Started adding check marks and the like to history to see what I'm doing.

Next:

  • Still need to add back those NPM dependencies. Tomorrow.
  • Need to define behaviour when listening to latest transactions. Need to see how to best bridge from regular sync and use event listeners to handle this.
  • Need to start writing more crypto logic, get leInt2Buff TS function signatures working.

2023.03.30 (2023-03-30)

Did:

  • Define entire logic for caching synced data.
  • Note that the main test probably won't work now because the logic is now diff.

Next:

  • Need to define behaviour in the non persistent case. This means no putting docs.
  • Need to organize types in main better!
  • Need to test main functionality sync behaviour.
  • Need to add dependencies back to NPM... or something else.

2023.03.29 (2023-03-29)

Did:

  • We can now sync deposits :], check the tests. It should show 6 deposit objects printed to console.

Next:

  • Need to speed up development.
  • Remember to make cache zippable and loadable.
  • Need to think about contract testing methodology in regards to testnet or fork. (ganache fork)
  • Do we really need forks? This isn't contract fuzz testing... Only proper deposit behaviour needs to be proven.
  • Can we mathematically verify correctness?

2023.03.28 (2023-03-28)

Did:

  • Change folder naming inside types dir.

Next:

  • See below.

2023.03.26 (2023-03-26)

Did:

  • Set up stuff for tests and added some small tests.
  • Wrote stuff for caching and syncing, syncing workable in next commit.

Next:

  • Expand further on tests also.
  • See below minus my "Did" this time around.

2023.03.24 (2023-03-24)

Did:

  • Finalized the PromisePooler, which will allow us to concurrently fetch deposit data to build the merkle tree.
  • Otherwise, contract getters, crypto, types, and some reading.

Next:

  • Start doing mocha tests. Lagging behind on this. This is top priority.
  • Implement merkle tree synchronization and store it in a PouchDB database.
  • Implement rest of the crypto functions.
  • Fetch Relayer data and rpc censor checking.

2023.03.21 (2023-03-21)

Did:

  • Implemented mostly async and data related functionalities.

Next:

  • See former.

2023.02.18 (2023-02-18) (this is wrong, it was March, but the commit says 02 still...)

Did:

  • Continued organizing file structure better.
  • Implemented some data related functionalities.

Next:

  • Planning out contract event syncs.
  • Need to create dedicated provider which checks whether the RPC censors.
  • Planning out mocha tests for TDD (this will all be in dev dependencies to minimize bloat).
  • Need to inform myself whether it makes sense to add Subgraph like cli or wether we should exclusively sync from chain.
  • Need to decide whether to add user & relayer staking into the sdk, governance interactions, it only makes sense, a relayer should be allowed to stake (use ethers encrypted wallets for this, those get printed into encrypted json format so it makes sense to use them, relayers should really use that too...).
  • Need to make a strategy of topics of whether it makes sense to keep increasing json files with historical commitments as part of the actual repository? Probably to some fix degree - it would be nice to find some possibility of uploading this type of data permissionlessly (Filecoin?) similarly to a cdn for it. In any case it could work well in combination with a CDN.
  • Need to started developing faster :]