Commit Graph

40 Commits

Author SHA1 Message Date
moebius
7e770b4647 fix: address pr comments 2025-02-26 15:31:11 -07:00
moebius
d79ab0c25d chore: update with dev 2025-02-26 14:43:36 -07:00
moebius
4548a03ce0 fix: fix envio ver 2025-02-24 15:37:02 +01:00
moebius
52f5ee08ec fix: typing 2025-02-24 15:31:28 +01:00
moebius
816b9b4b92 chore: update with dev 2025-02-22 13:06:15 +01:00
moebius
8da686e72b chore: update event interface with precommitment 2025-02-22 00:03:45 +01:00
moebius
5ed7007610 chore: switch to mnemonic based 2025-02-21 23:54:30 +01:00
moebius
97196a4aba feat: add ragequit event, envio testing 2025-02-21 15:54:32 +01:00
moebius
87299b8a04 test: envio deposit fetching 2025-02-21 15:41:10 +01:00
moebius
b158c7da70 feat: data provider, optimizations to history retrieval 2025-02-21 13:30:26 +01:00
moebius
3bb3199036 test: unit test key deriv methods 2025-02-21 12:07:02 +01:00
moebius
fa0a985c72 feat: key deriv methods 2025-02-21 11:57:09 +01:00
moebius
78013799d4 feat: base account service 2025-02-20 17:09:21 +01:00
moebius
5dcfc40be7 fix: update sdk to receive browser param and base url 2025-02-20 11:31:44 +01:00
Artem
aa0b074a1c fixed types on sdk package 2025-02-19 00:11:05 +07:00
Artem
af5bd7618d version bump 2025-02-18 23:23:34 +07:00
moebius
8ae370005a chore: update contracts license (#2) 2025-02-18 16:58:48 +01:00
moebius
3efc7e7b98 chore: update license to apache 2 on contracts 2025-02-18 16:52:42 +01:00
Artem
370e82d41b transferred sdk package to 0xbow namespace 2025-02-18 22:36:19 +07:00
moebius
6ae88dbe5d fix: miscellaneous fixes (#88) 2025-02-17 19:52:57 +01:00
moebius
4ff015b167 fix: update sdk abis and bump version (#86) 2025-02-17 13:22:12 +01:00
moebius
6d725b16de chore: remove scope from withdrawal struct (#81) 2025-02-13 16:18:49 +00:00
bezze
f3e9e35e0b test: relayer unit testing (#77) 2025-02-10 09:26:07 +00:00
moebius
2555543d88 chore: publish to gpr (#78) 2025-02-10 09:08:21 +00:00
Turtle
b4dcd74381 refactor: temporal package name (#76)
Fixes SEC-255
2025-02-08 00:00:44 +01:00
Turtle
16c0852e26 fix: sdk package name (#75) 2025-02-07 23:42:41 +01:00
moebius
7dc386cc18 fix: sdk release task (#71) 2025-02-07 13:22:39 +00:00
moebius
c7cfbb658a chore: add gh action to release canary node package (#70) 2025-02-07 12:31:41 +00:00
casiojapi
822918d328 chore: add circom prime modulus to secret generation (#64) 2025-02-06 10:41:20 +01:00
casiojapi
2287c928da Test/smart contract interactions unit tests (#63)
add unit tests covering contracts.service.ts, and add documentation on
the exposed methods of the service
2025-02-05 22:59:58 +00:00
casiojapi
799dce7da7 feat: add approveERC20() method (#62) 2025-02-05 18:52:43 +00:00
casiojapi
9deed292e8 feat: add brute force commitment recovery service (#60) 2025-02-05 16:21:58 +00:00
bezze
b6f58e6887 feat: relayer data checks and sdk integration (#58)
The core functionality of the feature takes place at
`packages/relayer/src/services/privacyPoolRelayer.service.ts` in the
`validateWithdrawal` function. There we check in order:
1. Decode Withdrawal.data and check feeReceiver ==
CONFIGURED_FEE_RECEIVER && feeBPS == CONFIGURED_FEE_BPS
2. Hash (Withdrawal || Scope) and check hash == Proof.context
3. Verify proof with SDK.verifyProof(Proof)
4. Call Entrypoint.scopeToPool() to get asset pool
5. Call Pool.ASSET() to get withdrawn asset
6. Check proof.withdrawnAmount() >=
CONFIGURED_MINIMUM_AMOUNT[withdrawn_asset]

If everything is ok, we call the Entrypoint.relay() with the user's
proof.

I've added examples for the config files `env.example`,
`withdraw_amount.example.json`. The first one are environment variables
to be defined in the server's environment. The second one contains a
mapping of the mimimum withdraw limits for the different supported
assets. There's an env var that should contain a path to this file.

Added a `Dockerfile` and a `docker-compose.yml` to the relayer to test
it or use it in dev flows. The circuit artifacts are loaded as volumes,
so before starting the docker-compose, you should run `yarn present`
from the circuits package dir to group all the artifacts and make them
easily accesible.

Additionally added a small package in
`/packages/relayer/test/integration/relay` that can be built and run to
test the relayer.
2025-02-05 14:24:29 +00:00
casiojapi
3265e9b732 feat: add smart contract interaction service (#59)
Co-authored-by: Francisco Bezzecchi <bezze@fatsolutions.xyz>
2025-02-04 09:13:19 +00:00
bezze
cc4cd8f13f feat: relayer basic implementation (#53)
There are a lot of TODOs related to code quality, mostly happy path
assumptions, input sanitization, error handling and tests. Feature wise
it's missing the contract interaction (should be straight forward once
it's implemented in the SDK) and the sqlite database for request
tracking.
2025-01-31 19:01:11 +00:00
bezze
9a437ba628 fix: making context browser compatible (#48)
small PR to remove Buffer because it's a nodejs native type.
Additionally adding snarkjs bitwidth resizing using BN254 prime.
2025-01-31 17:56:04 +00:00
moebius
e32e76d398 chore: integrate SDK into contracts tests (#47)
Co-authored-by: Lempire <61431140+lempire123@users.noreply.github.com>
2025-01-28 16:19:32 +00:00
TITI
7559502b36 feat: SDK base implementation (#31)
Description:
- Implementation for crypto operations
- Proof generation
- Merkle inclusion proofs

---------

Co-authored-by: casiojapi <casiopilled@gmail.com>
Co-authored-by: moebius <0xmoebius@protonmail.com>
2025-01-24 11:28:26 +00:00
bezze
7e2881573b feat: adding rollup bundler and a minimal groth16 prover interface (#32)
Because the SDK is meant to run both in web and nodejs I focused
bundling for those two targets. I chose Rollup.js as a bundler because
it is commonly used for bundling libraries and achives a decent tradeoff
between speed and flexibility.

The nodejs bundle will have the artifacts embedded in the package, while
the web bundle will need to have the artifacts being hosted at
/artifacts/{artifact_name}. The API for the circuits has an async
initializer that abstracts away the platform and loads the binaries.
Once initialized, the `circuits` object is used to initialize the
`ZkOps` class that uses the loaded binaries under the hood.

Observation: ~~currently, to build the bundle, the scripts assume you
have all the circuits artifacts at `src/circuits/artifacts`. The PR was
getting too big so I'll relax that assumption later.~~
EDIT: Build will now succeed without the artifacts because building them
in the ci/cd was way out of scope. I provided a script to install the
artifacts to the bundle build for local testing.

Usage example:

```typescript
import { ZkOps, circuits } from "@privacy-pool-core/sdk";

; (async () => {

    await circuits.downloadArtifacts("latest");
    const zkOps = new ZkOps(circuits);
    const input = {
        value: "1",
        label: BigInt("0"),
        nullifier: BigInt("123"),
        secret: BigInt("456"),
    };

    let r = await zkOps.proveCommitment(input);
    console.log(r)

})()
```
2025-01-23 08:14:21 +00:00
moebius
b81ed7bc34 feat: add SDK package (#12)
This PR introduces the template for the SDK package.
2025-01-08 13:30:40 +00:00