Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v18
v22.9.0
34 changes: 34 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,40 @@ Finally, you can query the processed data at the indexer's graphql API available

You can define which resolvers are available in `chain/src/processor/api/resolvers.ts`. By default all available resolvers generated based on your database schema file are used. You must configure additional middlewares, validations etc. yourself. The example configures a simple validation for the `take` argument for resolvers returning multiple entities at once.

## Lightnet Settlement & Bridging

At this point in time, the starter-kit offers settlement & bridging integration with lightnet (local mina network). You can enable these features by setting the `PROTOKIT_SETTLEMENT_ENABLED` environment variable to `true` in development .env file.

Follow these steps to get the sequencer to settle & bridge:
- Initialize the lightnet process, fund the sequencer operator & deploy settlement+bridging contracts:
```
pnpm env:development lightnet:start -d
pnpm env:development lightnet:initialize
```

- Run a worker, alongside with the sequencer in separate shell instances
```
pnpm env:development worker:dev
pnpm env:development sequencer:dev
```

- Fund a testing account on lightnet (defined in the .env file)
```
pnpm env:development lightnet:faucet B62qkVfEwyfkm5yucHEqrRjxbyx98pgdWz82pHv7LYq9Qigs812iWZ8
```

- Bridge the L1 $MINA to your app-chain, and observe your app-chain $MINA balance change after the next settlement lifecycle has been completed by the sequencer

> Token ID of MINA is `1` on both the L1 and app-chain
```
pnpm env:development bridge:deposit 1 TEST_ACCOUNT_1_PRIVATE_KEY TEST_ACCOUNT_1_PUBLIC_KEY 100
```

- Withdraw your app-chain $MINA tokens back to the L1
```
pnpm env:development bridge:withdraw 1 TEST_ACCOUNT_1_PRIVATE_KEY 100
```

## Deployments (sovereign environment)

When deploying to a server, you should push your code along with your forked starter-kit to some repository,
Expand Down
4 changes: 3 additions & 1 deletion apps/web/components/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ export default function Header({
{balanceLoading && balance === undefined ? (
<Skeleton className="h-4 w-full" />
) : (
<p className="text-xs font-bold">{balance} MINA</p>
<p className="text-xs font-bold">
{Number(balance) / 1e9} MINA
</p>
)}
</div>
</div>
Expand Down
12 changes: 9 additions & 3 deletions apps/web/lib/stores/balances.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Client, useClientStore } from "./client";
import { immer } from "zustand/middleware/immer";
import { PendingTransaction, UnsignedTransaction } from "@proto-kit/sequencer";
import { Balance, BalancesKey, TokenId } from "@proto-kit/library";
import { Provable, PublicKey, UInt64 } from "o1js";
import { Provable, PublicKey, UInt64, TokenId as O1JSTokenId } from "o1js";
import { useCallback, useEffect } from "react";
import { useChainStore } from "./chain";
import { useWalletStore } from "./wallet";
Expand All @@ -25,7 +25,8 @@ function isPendingTransaction(
throw new Error("Transaction is not a PendingTransaction");
}

export const tokenId = TokenId.from(0);
export const tokenId = TokenId.from(O1JSTokenId.default);
Provable.log("tokenId", tokenId);

export const useBalancesStore = create<
BalancesState,
Expand Down Expand Up @@ -53,7 +54,12 @@ export const useBalancesStore = create<
const sender = PublicKey.fromBase58(address);

const tx = await client.transaction(sender, async () => {
await balances.addBalance(tokenId, sender, Balance.from(1000));
await balances.addBalance(
tokenId,
sender,
// @ts-ignore
Balance.from(1000 * 1e9),
);
});

await tx.sign();
Expand Down
24 changes: 12 additions & 12 deletions apps/web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,17 @@
"typescript": "^5.4.5"
},
"peerDependencies": {
"@proto-kit/api": "0.1.1-develop.1689",
"@proto-kit/common": "0.1.1-develop.1689",
"@proto-kit/deployment": "0.1.1-develop.1689",
"@proto-kit/library": "0.1.1-develop.1689",
"@proto-kit/module": "0.1.1-develop.1689",
"@proto-kit/persistance": "0.1.1-develop.1689",
"@proto-kit/protocol": "0.1.1-develop.1689",
"@proto-kit/sdk": "0.1.1-develop.1689",
"@proto-kit/sequencer": "0.1.1-develop.1689",
"@proto-kit/indexer": "0.1.1-develop.1689",
"o1js": "2.11.0",
"tsyringe": "^4.10.0"
"@proto-kit/api": "../../../framework/packages/api",
"@proto-kit/common": "../../../framework/packages/common",
"@proto-kit/deployment": "../../../framework/packages/deployment",
"@proto-kit/library": "../../../framework/packages/library",
"@proto-kit/module": "../../../framework/packages/module",
"@proto-kit/persistance": "../../../framework/packages/persistance",
"@proto-kit/protocol": "../../../framework/packages/protocol",
"@proto-kit/sdk": "../../../framework/packages/sdk",
"@proto-kit/sequencer": "../../../framework/packages/sequencer",
"@proto-kit/indexer": "../../../framework/packages/indexer",
"o1js": "../../../framework/node_modules/o1js",
"tsyringe": "../../../framework/node_modules/tsyringe"
}
}
4 changes: 2 additions & 2 deletions docker/base/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# For regular deployment
FROM protokit-base
# FROM node:18

# For locally built and imported framework references
# Make sure you build the base-image first
# FROM protokit-base:latest
FROM protokit-base:latest

WORKDIR /app

Expand Down
2 changes: 2 additions & 0 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ include:
- ./indexer/docker-compose.yml
- ./processor-persistence/docker-compose.yml
- ./processor/docker-compose.yml
- ./worker/docker-compose.yml
- ./lightnet/docker-compose.yml
- ./monitoring/docker-compose.yml
21 changes: 21 additions & 0 deletions docker/lightnet/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
services:
lightnet:
image: o1labs/mina-local-network:compatible-latest-lightnet
container_name: lightnet

environment:
- RUN_ARCHIVE_NODE=true
- LOG_LEVEL=INFO
- PROOF_LEVEL=none
- NETWORK_TYPE=single-node
ports:
- 3085:3085
- 8083:8080
- 8084:8181
# archive endpoints
- 8085:8282
networks:
- lightnet-net

networks:
lightnet-net:
17 changes: 17 additions & 0 deletions docker/sequencer/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,28 @@ services:
- REDIS_PORT=${REDIS_PORT}
- REDIS_PASSWORD=${REDIS_PASSWORD}

- MINA_NODE_GRAPHQL_HOST=${MINA_NODE_GRAPHQL_HOST}
- MINA_NODE_GRAPHQL_PORT=${MINA_NODE_GRAPHQL_PORT}
- MINA_ARCHIVE_GRAPHQL_HOST=${MINA_ARCHIVE_GRAPHQL_HOST}
- MINA_ARCHIVE_GRAPHQL_PORT=${MINA_ARCHIVE_GRAPHQL_PORT}
- PROTOKIT_TRANSACTION_FEE_RECIPIENT_PRIVATE_KEY=${PROTOKIT_TRANSACTION_FEE_RECIPIENT_PRIVATE_KEY}
- PROTOKIT_TRANSACTION_FEE_RECIPIENT_PUBLIC_KEY=${PROTOKIT_TRANSACTION_FEE_RECIPIENT_PUBLIC_KEY}
- PROTOKIT_SETTLEMENT_INTERVAL=${PROTOKIT_SETTLEMENT_INTERVAL}
- PROTOKIT_SETTLEMENT_ENABLED=${PROTOKIT_SETTLEMENT_ENABLED}
- PROTOKIT_SHOULD_ATTEMPT_DB_MIGRATION=${PROTOKIT_SHOULD_ATTEMPT_DB_MIGRATION}
- PROTOKIT_LOG_LEVEL=${PROTOKIT_LOG_LEVEL}
- PROTOKIT_BLOCK_INTERVAL=${PROTOKIT_BLOCK_INTERVAL}
- PROTOKIT_GRAPHQL_HOST=${PROTOKIT_GRAPHQL_HOST}
- PROTOKIT_GRAPHQL_PORT=${PROTOKIT_GRAPHQL_PORT}
- PROTOKIT_GRAPHIQL_ENABLED=${PROTOKIT_GRAPHIQL_ENABLED}
- PROTOKIT_SEQUENCER_PRIVATE_KEY=${PROTOKIT_SEQUENCER_PRIVATE_KEY}
- PROTOKIT_SEQUENCER_PUBLIC_KEY=${PROTOKIT_SEQUENCER_PUBLIC_KEY}
- PROTOKIT_SETTLEMENT_CONTRACT_PRIVATE_KEY=${PROTOKIT_SETTLEMENT_CONTRACT_PRIVATE_KEY}
- PROTOKIT_SETTLEMENT_CONTRACT_PUBLIC_KEY=${PROTOKIT_SETTLEMENT_CONTRACT_PUBLIC_KEY}
- PROTOKIT_DISPATCHER_CONTRACT_PRIVATE_KEY=${PROTOKIT_DISPATCHER_CONTRACT_PRIVATE_KEY}
- PROTOKIT_DISPATCHER_CONTRACT_PUBLIC_KEY=${PROTOKIT_DISPATCHER_CONTRACT_PUBLIC_KEY}
- PROTOKIT_MINA_BRIDGE_CONTRACT_PRIVATE_KEY=${PROTOKIT_MINA_BRIDGE_CONTRACT_PRIVATE_KEY}
- PROTOKIT_MINA_BRIDGE_CONTRACT_PUBLIC_KEY=${PROTOKIT_MINA_BRIDGE_CONTRACT_PUBLIC_KEY}

- OPEN_TELEMETRY_TRACING_ENABLED=${OPEN_TELEMETRY_TRACING_ENABLED}
- OPEN_TELEMETRY_TRACING_URL=${OPEN_TELEMETRY_TRACING_URL}
Expand All @@ -42,6 +58,7 @@ services:
- db-net
- routing-net
- chain-net
- lightnet-net
ports:
- 8080:8080
command: ["./packages/chain/dist/start.js start ./environments/${PROTOKIT_ENV_FOLDER}/chain.config.js"]
Expand Down
4 changes: 2 additions & 2 deletions docker/web/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
FROM node:18-alpine AS base
# FROM node:18-alpine AS base
## Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
#RUN apk add --no-cache libc6-compat

# For locally built and imported framework references
# Make sure you build the base-image first
# FROM protokit-base:latest AS base
FROM protokit-base:latest AS base

# Install dependencies only when needed
FROM base AS builder
Expand Down
35 changes: 35 additions & 0 deletions docker/worker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
services:
worker:
image: starterkit-chain-base
build:
dockerfile: ./docker/base/Dockerfile
context: ../..
container_name: starterkit-worker
environment:
- REDIS_HOST=${REDIS_HOST}
- REDIS_PORT=${REDIS_PORT}
- REDIS_PASSWORD=${REDIS_PASSWORD}


- PROTOKIT_TRANSACTION_FEE_RECIPIENT_PRIVATE_KEY=${PROTOKIT_TRANSACTION_FEE_RECIPIENT_PRIVATE_KEY}
- PROTOKIT_TRANSACTION_FEE_RECIPIENT_PUBLIC_KEY=${PROTOKIT_TRANSACTION_FEE_RECIPIENT_PUBLIC_KEY}
- PROTOKIT_LOG_LEVEL=${PROTOKIT_LOG_LEVEL}
- PROTOKIT_SEQUENCER_PRIVATE_KEY=${PROTOKIT_SEQUENCER_PRIVATE_KEY}
- PROTOKIT_SEQUENCER_PUBLIC_KEY=${PROTOKIT_SEQUENCER_PUBLIC_KEY}
- PROTOKIT_SETTLEMENT_CONTRACT_PRIVATE_KEY=${PROTOKIT_SETTLEMENT_CONTRACT_PRIVATE_KEY}
- PROTOKIT_SETTLEMENT_CONTRACT_PUBLIC_KEY=${PROTOKIT_SETTLEMENT_CONTRACT_PUBLIC_KEY}
- PROTOKIT_DISPATCHER_CONTRACT_PRIVATE_KEY=${PROTOKIT_DISPATCHER_CONTRACT_PRIVATE_KEY}
- PROTOKIT_DISPATCHER_CONTRACT_PUBLIC_KEY=${PROTOKIT_DISPATCHER_CONTRACT_PUBLIC_KEY}
- PROTOKIT_MINA_BRIDGE_CONTRACT_PRIVATE_KEY=${PROTOKIT_MINA_BRIDGE_CONTRACT_PRIVATE_KEY}
- PROTOKIT_MINA_BRIDGE_CONTRACT_PUBLIC_KEY=${PROTOKIT_MINA_BRIDGE_CONTRACT_PUBLIC_KEY}
- PROTOKIT_SETTLEMENT_INTERVAL=${PROTOKIT_SETTLEMENT_INTERVAL}
- PROTOKIT_SETTLEMENT_ENABLED=${PROTOKIT_SETTLEMENT_ENABLED}
profiles:
- worker
depends_on:
redis:
condition: service_healthy
networks:
- db-net
command: ["./packages/chain/dist/start.js start ./environments/${PROTOKIT_ENV_FOLDER}/worker.config.js"]

16 changes: 15 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"sequencer:dev": "turbo run sequencer:dev --env-mode=loose",
"indexer:dev": "turbo run indexer:dev --env-mode=loose",
"processor:dev": "turbo run processor:dev --env-mode=loose",
"worker:dev": "turbo run worker:dev --env-mode=loose",
"lint": "turbo run lint",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
"test": "turbo run test",
Expand All @@ -27,7 +28,20 @@
"docker:down": "docker compose -f docker/docker-compose.yml down",
"env:development": "dotenv -e ./packages/chain/src/environments/development/.env -- pnpm",
"env:inmemory": "dotenv -e ./packages/chain/src/environments/inmemory/.env -- pnpm",
"env:sovereign": "dotenv -e ./packages/chain/src/environments/sovereign/.env -- pnpm"
"env:sovereign": "dotenv -e ./packages/chain/src/environments/sovereign/.env -- pnpm",
"generate-keys": "turbo run generate-keys --env-mode=loose --",
"lightnet:start": "docker compose -f docker/lightnet/docker-compose.yml up",
"lightnet:stop": "docker compose -f docker/lightnet/docker-compose.yml down",
"lightnet:faucet": "turbo run lightnet:faucet --env-mode=loose --",
"lightnet:wait-for-network": "turbo run lightnet:wait-for-network --env-mode=loose --",
"lightnet:initialize": "pnpm env:development lightnet:wait-for-network && pnpm env:development lightnet:faucet PROTOKIT_SEQUENCER_PUBLIC_KEY && pnpm env:development lightnet:faucet TEST_ACCOUNT_1_PUBLIC_KEY && pnpm env:development settlement:deploy",
"settlement:deploy": "turbo run settlement:deploy --env-mode=loose --",
"settlement:token:deploy": "turbo run settlement:token:deploy --env-mode=loose --",
"mina-explorer:start": "turbo run mina-explorer:start --env-mode=loose --",
"bridge:deposit": "turbo run bridge:deposit --env-mode=loose --",
"bridge:withdraw": "turbo run bridge:withdraw --env-mode=loose --",
"bridge:redeem": "turbo run bridge:redeem --env-mode=loose --",
"docker:prune": "rm -rf ./docker/data/*"
},
"devDependencies": {
"eslint": "^8.53.0",
Expand Down
1 change: 0 additions & 1 deletion packages/chain/jest.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
/* eslint-disable import/unambiguous */
/* eslint-disable import/no-commonjs */
/** @type {import('ts-jest').JestConfigWithTsJest} */

module.exports = {
// because we run tests from within ./packages/<package_name>/
rootDir: './',
Expand Down
60 changes: 37 additions & 23 deletions packages/chain/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,39 +24,51 @@
"indexer:start": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./dist/start.js start \"./environments/$PROTOKIT_ENV_FOLDER/indexer.config.js\" $1",
"processor:start": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./dist/start.js start \"./environments/$PROTOKIT_ENV_FOLDER/processor.config.js\" $1",
"dev": "pnpm run sequencer:dev",
"sequencer:dev:run": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/start.ts start \"./environments/$PROTOKIT_ENV_FOLDER/chain.config.ts\" $1",
"sequencer:dev": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/start.ts start \"./environments/$PROTOKIT_ENV_FOLDER/chain.config.ts\" $1",
"indexer:dev:run": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/start.ts start \"./environments/$PROTOKIT_ENV_FOLDER/indexer.config.ts\" $1",
"processor:dev:run": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/start.ts start \"./environments/$PROTOKIT_ENV_FOLDER/processor.config.ts\" $1",
"sequencer:dev": "nodemon --watch src -e ts --exec \"pnpm sequencer:dev:run\"",
"sequencer:dev:2": "nodemon --watch src -e ts --exec \"pnpm sequencer:dev:run\"",
"indexer:dev": "nodemon --watch src -e ts --exec \"pnpm indexer:dev:run\"",
"processor:dev": "nodemon --watch src -e ts --exec \"pnpm processor:dev:run\"",
"worker:dev": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/start.ts start \"./environments/$PROTOKIT_ENV_FOLDER/worker.config.ts\" $1",
"worker:dev:2": "nodemon --watch src -e ts --exec \"pnpm worker:dev:run\"",
"prisma:generate": "pnpm run sequencer:prisma:generate && pnpm run indexer:prisma:generate && pnpm run processor:prisma:generate",
"prisma:migrate": "pnpm run sequencer:prisma:migrate && pnpm run indexer:prisma:migrate && pnpm run processor:prisma:migrate",
"sequencer:prisma:migrate": "prisma migrate deploy --schema ./node_modules/@proto-kit/persistance/prisma/schema.prisma",
"sequencer:prisma:generate": "prisma generate --schema ./node_modules/@proto-kit/persistance/prisma/schema.prisma",
"indexer:prisma:migrate": "prisma migrate deploy --schema ./node_modules/@proto-kit/indexer/prisma/schema.prisma",
"indexer:prisma:generate": "prisma generate --schema ./node_modules/@proto-kit/indexer/prisma/schema.prisma",
"processor:prisma:migrate:dev": "prisma migrate dev --schema ./src/processor/prisma/schema.prisma",
"processor:prisma:migrate:dev": "prisma migrate dev --schema ./src/processor/prisma/schema.prisma",
"processor:prisma:migrate": "prisma migrate deploy --schema ./src/processor/prisma/schema.prisma",
"processor:prisma:generate": "prisma generate --schema ./src/processor/prisma/schema.prisma"
"processor:prisma:generate": "prisma generate --schema ./src/processor/prisma/schema.prisma",
"generate-keys": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/generate-keys.ts $1",
"lightnet:faucet": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/run lightnet/faucet.ts $1",
"lightnet:wait-for-network": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/run lightnet/wait-for-network.ts $1",
"settlement:deploy": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/run settlement/deploy.ts $1",
"settlement:token:deploy": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/run settlement/deploy-token.ts $1",
"mina-explorer:start": "node ./node_modules/mina-lightweight-explorer/server.js",
"bridge:deposit": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/run bridge/deposit.ts $1",
"bridge:withdraw": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/run bridge/withdraw.ts $1",
"bridge:redeem": "node --loader ts-node/esm --experimental-vm-modules --experimental-wasm-modules --es-module-specifier-resolution=node ./src/scripts/run bridge/redeem.ts $1"
},
"peerDependencies": {
"@proto-kit/api": "0.1.1-develop.1689",
"@proto-kit/common": "0.1.1-develop.1689",
"@proto-kit/deployment": "0.1.1-develop.1689",
"@proto-kit/library": "0.1.1-develop.1689",
"@proto-kit/module": "0.1.1-develop.1689",
"@proto-kit/persistance": "0.1.1-develop.1689",
"@proto-kit/protocol": "0.1.1-develop.1689",
"@proto-kit/sdk": "0.1.1-develop.1689",
"@proto-kit/sequencer": "0.1.1-develop.1689",
"@proto-kit/indexer": "0.1.1-develop.1689",
"@proto-kit/processor": "0.1.1-develop.1689",
"o1js": "2.11.0",
"tsyringe": "^4.10.0"
"@proto-kit/api": "../../../framework/packages/api",
"@proto-kit/common": "../../../framework/packages/common",
"@proto-kit/deployment": "../../../framework/packages/deployment",
"@proto-kit/indexer": "../../../framework/packages/indexer",
"@proto-kit/library": "../../../framework/packages/library",
"@proto-kit/module": "../../../framework/packages/module",
"@proto-kit/persistance": "../../../framework/packages/persistance",
"@proto-kit/processor": "../../../framework/packages/processor",
"@proto-kit/protocol": "../../../framework/packages/protocol",
"@proto-kit/sdk": "../../../framework/packages/sdk",
"@proto-kit/sequencer": "../../../framework/packages/sequencer",
"o1js": "../../../framework/node_modules/o1js",
"tsyringe": "../../../framework/node_modules/tsyringe"
},
"devDependencies": {
"@jest/globals": "^29.6.1",
"@prisma/client": "5.18",
"@types/jest": "^29.5.7",
"@types/node": "^20.8.10",
"@types/react-dom": "^18.2.7",
Expand All @@ -66,6 +78,7 @@
"crypto-browserify": "^3.12.0",
"eslint-config-custom": "workspace:*",
"events": "^3.3.0",
"graphql": "^16.8.1",
"jest": "^29.6.1",
"jest-expect-message": "^1.1.3",
"loglevel": "^1.8.1",
Expand All @@ -79,18 +92,19 @@
"ts-jest": "^29.1.1",
"ts-node": "^10.9.2",
"tsconfig": "workspace:*",
"typegraphql-prisma": "^0.28",
"typescript": "5.4.5",
"url": "^0.11.1",
"util": "^0.12.5",
"yargs": "^17.7.2",
"typegraphql-prisma": "^0.28",
"graphql": "^16.8.1",
"@prisma/client": "5.18"
"yargs": "^17.7.2"
},
"dependencies": {
"reflect-metadata": "^0.1.13",
"graphql-fields": "^2.0.3",
"graphql-scalars": "^1.22.4",
"graphql-fields": "^2.0.3"
"mina-lightweight-explorer": "github:o1-labs/mina-lightweight-explorer",
"reflect-metadata": "^0.1.13",
"type-graphql": "2.0.0-rc.2",
"mina-fungible-token": "^1.1.0"
},
"nodemonConfig": {
"delay": 1000
Expand Down
Loading