Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

16 changed files with 89 additions and 424 deletions

View File

@ -2,22 +2,10 @@
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## What is Azimuth?
Azimuth is Urbit's public key infrastructure (PKI) that lives on Ethereum. It's a set of smart contracts that manage Urbit identities called "points" (similar to usernames), their ownership, cryptographic keys, and hierarchical relationships. By storing identity data on Ethereum, the system is decentralized and censorship-resistant.
## Project Overview
This is a monorepo containing blockchain watchers for the Azimuth PKI system used in Urbit identities. It watches multiple Ethereum contracts (Azimuth, Censures, Claims, ConditionalStarRelease, DelegatedSending, Ecliptic, LinearStarRelease, Polls) and provides GraphQL APIs for querying their state.
**Watchers** are services that continuously monitor smart contracts on Ethereum, index their events and state changes, and provide efficient APIs for querying blockchain data. Instead of directly querying the Ethereum blockchain (which is slow and expensive), applications can query watchers for fast, indexed access to current and historical blockchain state.
## Hosted Service
A public instance is available at: **https://azimuth.dev.vdb.to/graphql**
You can also run the system locally using [Stack Orchestrator](https://git.vdb.to/cerc-io/stack-orchestrator/src/branch/main/app/data/stacks/azimuth).
## Common Commands
### Building and Development
@ -71,7 +59,6 @@ yarn index-block
```
### Gateway Server
The gateway server runs on port 4000 by default.
```bash
# Development gateway server (proxies to all watchers)
yarn server:dev
@ -104,12 +91,10 @@ Each watcher follows identical structure:
- `src/cli/` - Command-line utilities for management
### Gateway Server Architecture
- **Port**: Runs on port 4000 by default (http://localhost:4000/graphql)
- **Schema stitching**: Combines all watcher schemas with prefixed field names
- **Health checking**: Monitors watcher availability before routing
- **Configuration**: `packages/gateway-server/src/watchers.json` defines watcher endpoints and prefixes
- **Configuration**: `src/watchers.json` defines watcher endpoints and prefixes
- **GraphQL proxy**: Routes queries like `azimuthGetKeys` to azimuth-watcher at localhost:3001
- **Query prefixing**: Each watcher's queries are prefixed (e.g., `azimuthGetKeys`, `censuresGetCensuredByCount`, `claimsFindClaim`)
### Data Flow
1. **Event Processing**: job-runner fetches Ethereum events → processes through indexer → stores in database
@ -131,57 +116,3 @@ Each watcher follows identical structure:
### Generated Watcher Creation
Watchers are generated using `@cerc-io/codegen` from contract ABIs. The process involves creating config.yaml files specifying contract paths, output folders, and generation modes (eth_call/storage/all).
## Docker & Deployment
### Building Docker Images
The project includes a Dockerfile for building production-ready container images:
```bash
# Build the watcher-azimuth image
docker build -t cerc/watcher-azimuth -f Dockerfile .
```
The Dockerfile:
- Uses Node.js 18.16.0 on Alpine Linux 3.16
- Installs build dependencies (git, python3, alpine-sdk, jq)
- Embeds the Git commit hash in all package.json files
- Builds only azimuth-watcher and gateway-server packages
- Includes toml-js for runtime configuration updates
- Results in a ~1.1GB production image
### CI/CD Pipeline
The project uses GitHub Actions for automated Docker image publishing:
- **Trigger**: On release publication (tags)
- **Workflow**: `.gitea/workflows/docker-image.yml`
- **Outputs**:
- Image tagged with git SHA (e.g., `git.vdb.to/laconicnetwork/cerc/watcher-azimuth:abc1234`)
- Image tagged with release version (e.g., `git.vdb.to/laconicnetwork/cerc/watcher-azimuth:v0.1.10`)
- **Registry**: git.vdb.to
To trigger a release build:
1. Create and push a new git tag
2. Publish the release on GitHub
3. CI will automatically build and push Docker images
## Git Hooks
The project uses [Husky](https://typicode.github.io/husky/) for Git hooks:
- **Pre-commit hook**: Automatically runs `yarn lint` before every commit
- **Configuration**: `.husky/pre-commit`
- **Setup**: Run `yarn install` or `yarn prepare` to install hooks
- **Bypass**: Use `git commit --no-verify` to skip hooks (not recommended)
This ensures code quality by enforcing linting rules before code is committed.
## Key Technologies
- **Language**: TypeScript 5.0+
- **Database**: PostgreSQL with TypeORM 0.2.37
- **Blockchain**: ethers.js 5.4+ for Ethereum interaction
- **GraphQL**: graphql 15.5+ with custom resolvers
- **API Framework**: @cerc-io packages for watcher infrastructure
- **Monorepo**: Lerna 6.6+ with Yarn workspaces
- **Base Image**: Node.js 18.16.0 on Alpine Linux (Docker)

View File

@ -3,6 +3,6 @@
"packages/*"
],
"useWorkspaces": true,
"version": "0.1.11",
"version": "0.1.10",
"npmClient": "yarn"
}

View File

@ -1,131 +0,0 @@
# Mock Sponsorship Events
This document describes how to inject mock sponsorship change events into the azimuth-watcher for testing purposes.
## Overview
The azimuth-watcher supports injecting mock events for sponsorship changes (EscapeRequested, EscapeAccepted, EscapeCanceled, LostSponsor) via a GraphQL mutation.
## Usage
### Inject Mock Events
Open the GraphQL playground and run the `injectMockEvents` mutation:
```graphql
mutation {
injectMockEvents(
events: [
{
type: ESCAPE_REQUESTED
point: 256
sponsor: 1
blockNumber: 1000
}
{
type: ESCAPE_ACCEPTED
point: 256
sponsor: 1
blockNumber: 1001
}
]
) {
success
eventsInjected
}
}
```
## Event Types
The following event types are supported:
### Sponsorship Events
- `ESCAPE_REQUESTED` - Star requests to change sponsor
- `ESCAPE_ACCEPTED` - New galaxy accepts the star
- `ESCAPE_CANCELED` - Escape request is canceled (by star or rejected by galaxy)
- `LOST_SPONSOR` - Current galaxy stops sponsoring the star
### Ownership Events
- `OWNER_CHANGED` - Ownership of a point changes
## Example Scenarios
### Successful Sponsor Change
```graphql
mutation {
injectMockEvents(
events: [
{ type: ESCAPE_REQUESTED, point: 256, sponsor: 1, blockNumber: 1000 }
{ type: ESCAPE_ACCEPTED, point: 256, sponsor: 1, blockNumber: 1001 }
]
) {
success
eventsInjected
}
}
```
### Galaxy Detaches Star
```graphql
mutation {
injectMockEvents(
events: [
{ type: LOST_SPONSOR, point: 512, sponsor: 0, blockNumber: 2000 }
]
) {
success
eventsInjected
}
}
```
### Canceled Escape
```graphql
mutation {
injectMockEvents(
events: [
{ type: ESCAPE_REQUESTED, point: 768, sponsor: 2, blockNumber: 3000 }
{ type: ESCAPE_CANCELED, point: 768, sponsor: 2, blockNumber: 3001 }
]
) {
success
eventsInjected
}
}
```
### Ownership Change
```graphql
mutation {
injectMockEvents(
events: [
{ type: OWNER_CHANGED, point: 256, owner: "0x1234567890123456789012345678901234567890", blockNumber: 4000 }
]
) {
success
eventsInjected
}
}
```
## Testing from zenithd
1. Set the azimuth-watcher endpoint:
```bash
export AZIMUTH_WATCHER_ENDPOINT=http://localhost:3001/graphql
```
2. Inject mock events via GraphQL playground (step 2 above)
3. Run zenithd tests - it will receive the mock events through normal GraphQL queries
## Files Modified
- `src/mock-event-store.ts` - In-memory event storage
- `src/schema.gql` - Added mutation and types
- `src/resolvers.ts` - Added mutation resolver and modified `eventsInRange` query

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/azimuth-watcher",
"version": "0.1.11",
"version": "0.1.10",
"description": "azimuth-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -1,105 +0,0 @@
//
// Copyright 2025 DeepStack
//
import { ResultEvent } from '@cerc-io/util';
const AZIMUTH_CONTRACT = '0x223c067F8CF28ae173EE5CafEa60cA44C335fecB';
const MOCK_TX_HASH = '0x0000000000000000000000000000000000000000000000000000000000000000';
const MOCK_FROM_ADDRESS = '0x0000000000000000000000000000000000000000';
export type MockEventType = 'ESCAPE_REQUESTED' | 'ESCAPE_ACCEPTED' | 'ESCAPE_CANCELED' | 'LOST_SPONSOR' | 'OWNER_CHANGED';
export interface MockEventInput {
type: MockEventType;
point: number;
sponsor?: number;
owner?: string;
blockNumber: number;
}
class MockEventStore {
private events: ResultEvent[] = [];
addEvents (inputs: MockEventInput[]): number {
const newEvents = inputs.map((input, index) => this.createMockEvent(input, index));
this.events.push(...newEvents);
return newEvents.length;
}
getEventsInRange (fromBlock: number, toBlock: number, eventName?: string): ResultEvent[] {
return this.events.filter(event => {
const blockNumber = event.block.number;
const matchesRange = blockNumber >= fromBlock && blockNumber <= toBlock;
const matchesName = !eventName || event.event.__typename === `${eventName}Event`;
return matchesRange && matchesName;
});
}
private createMockEvent (input: MockEventInput, eventIndex: number): ResultEvent {
const { type, point, sponsor, owner, blockNumber } = input;
const blockHash = `0x${blockNumber.toString(16).padStart(64, '0')}`;
const parentHash = `0x${(blockNumber - 1).toString(16).padStart(64, '0')}`;
return {
block: {
cid: null,
hash: blockHash,
number: blockNumber,
timestamp: Math.floor(Date.now() / 1000),
parentHash
},
tx: {
hash: MOCK_TX_HASH,
index: 0,
from: MOCK_FROM_ADDRESS,
to: AZIMUTH_CONTRACT
},
contract: AZIMUTH_CONTRACT,
eventIndex,
eventSignature: '',
event: this.createEventData(type, point, sponsor, owner),
proof: ''
};
}
private createEventData (type: MockEventType, point: number, sponsor?: number, owner?: string): any {
switch (type) {
case 'ESCAPE_REQUESTED':
return {
__typename: 'EscapeRequestedEvent',
point: BigInt(point),
sponsor: BigInt(sponsor ?? 0)
};
case 'ESCAPE_ACCEPTED':
return {
__typename: 'EscapeAcceptedEvent',
point: BigInt(point),
sponsor: BigInt(sponsor ?? 0)
};
case 'ESCAPE_CANCELED':
return {
__typename: 'EscapeCanceledEvent',
point: BigInt(point),
sponsor: BigInt(sponsor ?? 0)
};
case 'LOST_SPONSOR':
return {
__typename: 'LostSponsorEvent',
point: BigInt(point),
sponsor: BigInt(sponsor ?? 0)
};
case 'OWNER_CHANGED':
return {
__typename: 'OwnerChangedEvent',
point: BigInt(point),
owner: owner ?? ''
};
default:
throw new Error(`Unknown mock event type: ${type}`);
}
}
}
export const mockEventStore = new MockEventStore();

View File

@ -23,7 +23,6 @@ import {
} from '@cerc-io/util';
import { Indexer } from './indexer';
import { mockEventStore, MockEventInput } from './mock-event-store';
const log = debug('vulcanize:resolver');
@ -106,12 +105,6 @@ export const createResolvers = async (
await indexer.watchContract(address, kind, checkpoint, startingBlock);
return true;
},
injectMockEvents: async (_: any, { events }: { events: MockEventInput[] }): Promise<{ success: boolean, eventsInjected: number }> => {
log('injectMockEvents', events.length);
const eventsInjected = mockEventStore.addEvents(events);
return { success: true, eventsInjected };
}
},
@ -1132,8 +1125,7 @@ export const createResolvers = async (
}
const events = await indexer.getEventsInRange(fromBlockNumber, toBlockNumber, name);
const mockEvents = mockEventStore.getEventsInRange(fromBlockNumber, toBlockNumber, name);
return [...events.map(event => indexer.getResultEvent(event)), ...mockEvents];
return events.map(event => indexer.getResultEvent(event));
}
);
},

View File

@ -174,27 +174,6 @@ type SyncStatus {
latestProcessedBlockNumber: Int!
}
enum MockEventType {
ESCAPE_REQUESTED
ESCAPE_ACCEPTED
ESCAPE_CANCELED
LOST_SPONSOR
OWNER_CHANGED
}
input MockEventInput {
type: MockEventType!
point: Int!
sponsor: Int
owner: String
blockNumber: Int!
}
type MockInjectionResult {
success: Boolean!
eventsInjected: Int!
}
type Query {
events(blockHash: String!, contractAddress: String!, name: String): [ResultEvent!]
eventsInRange(fromBlockNumber: Int!, toBlockNumber: Int!, name: String): [ResultEvent!]
@ -249,7 +228,6 @@ type Query {
type Mutation {
watchContract(address: String!, kind: String!, checkpoint: Boolean!, startingBlock: Int): Boolean!
injectMockEvents(events: [MockEventInput!]!): MockInjectionResult!
}
type Subscription {

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/censures-watcher",
"version": "0.1.11",
"version": "0.1.9",
"description": "censures-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/claims-watcher",
"version": "0.1.11",
"version": "0.1.9",
"description": "claims-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/conditional-star-release-watcher",
"version": "0.1.11",
"version": "0.1.9",
"description": "conditional-star-release-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/delegated-sending-watcher",
"version": "0.1.11",
"version": "0.1.9",
"description": "delegated-sending-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/ecliptic-watcher",
"version": "0.1.11",
"version": "0.1.9",
"description": "ecliptic-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/gateway-server",
"version": "0.1.11",
"version": "0.1.9",
"main": "index.js",
"license": "AGPL-3.0",
"private": true,

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/linear-star-release-watcher",
"version": "0.1.11",
"version": "0.1.9",
"description": "linear-star-release-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -1,6 +1,6 @@
{
"name": "@cerc-io/polls-watcher",
"version": "0.1.11",
"version": "0.1.9",
"description": "polls-watcher",
"private": true,
"main": "dist/index.js",
@ -39,10 +39,10 @@
"homepage": "https://github.com/cerc-io/watcher-ts#readme",
"dependencies": {
"@apollo/client": "^3.3.19",
"@cerc-io/cli": "0.2.98-patch.3",
"@cerc-io/ipld-eth-client": "0.2.98-patch.3",
"@cerc-io/solidity-mapper": "0.2.98-patch.3",
"@cerc-io/util": "0.2.98-patch.3",
"@cerc-io/cli": "0.2.98-patch.2",
"@cerc-io/ipld-eth-client": "0.2.98-patch.2",
"@cerc-io/solidity-mapper": "0.2.98-patch.2",
"@cerc-io/util": "0.2.98-patch.2",
"@ethersproject/providers": "^5.4.4",
"debug": "^4.3.1",
"decimal.js": "^10.3.1",

View File

@ -206,10 +206,10 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
"@cerc-io/cache@^0.2.98-patch.3":
version "0.2.98-patch.3"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fcache/-/0.2.98-patch.3/cache-0.2.98-patch.3.tgz#d60eee7f751036532b2d9a054216a75c99832f6c"
integrity sha512-zalJUirFo++YFdA8tD8F632XhpPOkNjsz87VP2ltHCSIrh720T4v/QDzMsGORs++1E9oPp4QRbQ7MntX/jzVwA==
"@cerc-io/cache@^0.2.98-patch.2":
version "0.2.98-patch.2"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fcache/-/0.2.98-patch.2/cache-0.2.98-patch.2.tgz#2be752e92aa42cc7c57ade5387fe950832d1e39a"
integrity sha512-0KkK+UsC9iBPt23iD1n8CRS5anp9JHeAy2K5/fHLmFccc58rC6jNi2J/U+mDQ3AkeojlqMvDkQc4w071der/Gw==
dependencies:
canonical-json "^0.0.4"
debug "^4.3.1"
@ -217,19 +217,19 @@
fs-extra "^10.0.0"
level "^7.0.0"
"@cerc-io/cli@0.2.98-patch.3":
version "0.2.98-patch.3"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fcli/-/0.2.98-patch.3/cli-0.2.98-patch.3.tgz#08208564bbdcfa23c91a0f0a3a40c9496aeacf23"
integrity sha512-mNkd0JZ63Kxs7Nr0+1QgWi2MNcDiSTyINPS7BpWBQUAYpJu4YZ6Y8KJpI+6Juxh1TlnZU8F4fh6MqEuORwgvrw==
"@cerc-io/cli@0.2.98-patch.2":
version "0.2.98-patch.2"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fcli/-/0.2.98-patch.2/cli-0.2.98-patch.2.tgz#56e2130a40cd748cd7f045d66393e836cb2b3583"
integrity sha512-o3+Ryp0T/6TShd5gKFFtt67wBamtBpK0Ci/c87Yf8RiB7jPsXOILLvigJkhQWhnldvfCULyjWriy5L4dZ/j99w==
dependencies:
"@apollo/client" "^3.7.1"
"@cerc-io/cache" "^0.2.98-patch.3"
"@cerc-io/ipld-eth-client" "^0.2.98-patch.3"
"@cerc-io/cache" "^0.2.98-patch.2"
"@cerc-io/ipld-eth-client" "^0.2.98-patch.2"
"@cerc-io/libp2p" "^0.42.2-laconic-0.1.4"
"@cerc-io/nitro-node" "^0.1.15"
"@cerc-io/peer" "^0.2.98-patch.3"
"@cerc-io/rpc-eth-client" "^0.2.98-patch.3"
"@cerc-io/util" "^0.2.98-patch.3"
"@cerc-io/peer" "0.2.98"
"@cerc-io/rpc-eth-client" "^0.2.98-patch.2"
"@cerc-io/util" "^0.2.98-patch.2"
"@ethersproject/providers" "^5.4.4"
"@graphql-tools/utils" "^9.1.1"
"@ipld/dag-cbor" "^8.0.0"
@ -250,14 +250,14 @@
typeorm "0.2.37"
yargs "^17.0.1"
"@cerc-io/ipld-eth-client@0.2.98-patch.3", "@cerc-io/ipld-eth-client@^0.2.98-patch.3":
version "0.2.98-patch.3"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fipld-eth-client/-/0.2.98-patch.3/ipld-eth-client-0.2.98-patch.3.tgz#cde66c17a00b5294ceffe320d4c9893f69d690da"
integrity sha512-QELYD26u9d4ZAmRjvm/ljS5iYQheUaQiUuEYV7Hig6Q4qFy8xdEjN/4uaJu/0/Q1gcKhdFGQLmwaJ4o1hNQ87Q==
"@cerc-io/ipld-eth-client@0.2.98-patch.2", "@cerc-io/ipld-eth-client@^0.2.98-patch.2":
version "0.2.98-patch.2"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fipld-eth-client/-/0.2.98-patch.2/ipld-eth-client-0.2.98-patch.2.tgz#88feb90ff67dc6c4fa31f7bac64b34276b7aeccb"
integrity sha512-Dh4IcQHkIvxGotXS/WqUzADfP9W8eZqGyaoKGlSYMNnFLgU5CL8Atag4yhfiKqqMZX1qO4QEoAFQ0ABIh8KhSw==
dependencies:
"@apollo/client" "^3.7.1"
"@cerc-io/cache" "^0.2.98-patch.3"
"@cerc-io/util" "^0.2.98-patch.3"
"@cerc-io/cache" "^0.2.98-patch.2"
"@cerc-io/util" "^0.2.98-patch.2"
cross-fetch "^3.1.4"
debug "^4.3.1"
ethers "^5.4.4"
@ -380,10 +380,10 @@
lodash "^4.17.21"
uint8arrays "^4.0.3"
"@cerc-io/peer@^0.2.65":
version "0.2.74"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fpeer/-/0.2.74/peer-0.2.74.tgz#cc54e513e1857b04630f6b11e9a65dcdcc532790"
integrity sha512-l7y19KU0ZJtRkjTrgyzHj+0X8Zu9GO70Eg0AKMFrGmcFfHEfjKGmfWn0gYERNHSy5SGktOJAztAtd/dXARPpnw==
"@cerc-io/peer@0.2.98":
version "0.2.98"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fpeer/-/0.2.98/peer-0.2.98.tgz#650c771be2a3767456f38c93cb86e6667f2867ec"
integrity sha512-b8sCTzFxfTgrlscNutBzML0y4rzkZvzjCpHDEp3P4fMRHIK9SM5o8yYaPS9g1NwoedjbLKCnCDrmaIGpLEbmqA==
dependencies:
"@cerc-io/libp2p" "^0.42.2-laconic-0.1.4"
"@cerc-io/prometheus-metrics" "1.1.4"
@ -410,10 +410,10 @@
unique-names-generator "^4.7.1"
yargs "^17.0.1"
"@cerc-io/peer@^0.2.98-patch.3":
version "0.2.98-patch.3"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fpeer/-/0.2.98-patch.3/peer-0.2.98-patch.3.tgz#3369a7fbe782ec5a2deffb9d183900bcb393842e"
integrity sha512-tnJEyFyAX6EEKp3xh73/c5FwY8M/6vbaCE5JXOPtyXhL9cIXhjMPmxJ7J370Nb+3DC8qcPbbuJOMXaYzawO5vQ==
"@cerc-io/peer@^0.2.65":
version "0.2.74"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fpeer/-/0.2.74/peer-0.2.74.tgz#cc54e513e1857b04630f6b11e9a65dcdcc532790"
integrity sha512-l7y19KU0ZJtRkjTrgyzHj+0X8Zu9GO70Eg0AKMFrGmcFfHEfjKGmfWn0gYERNHSy5SGktOJAztAtd/dXARPpnw==
dependencies:
"@cerc-io/libp2p" "^0.42.2-laconic-0.1.4"
"@cerc-io/prometheus-metrics" "1.1.4"
@ -452,23 +452,23 @@
it-stream-types "^1.0.4"
promjs "^0.4.2"
"@cerc-io/rpc-eth-client@^0.2.98-patch.3":
version "0.2.98-patch.3"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Frpc-eth-client/-/0.2.98-patch.3/rpc-eth-client-0.2.98-patch.3.tgz#37255cce97df6f162305b0b86647a600267ca1e6"
integrity sha512-3Fd7GiISGMTiRmGAadvxVEqXm003kAZQXYgE7MFVKbjnd87NuCnyMmFGKoBT8qQMKy9DS0rs3rR3A76Z8tNg3w==
"@cerc-io/rpc-eth-client@^0.2.98-patch.2":
version "0.2.98-patch.2"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Frpc-eth-client/-/0.2.98-patch.2/rpc-eth-client-0.2.98-patch.2.tgz#11499c754ec25b0705b102ae5cbf6cd4b81d9c3b"
integrity sha512-7VNuWLt82yoBsTk5Nz8LWuCZiqZ6WjsFWIK+9lAnRoHHrt7ojLq7LGTrzRlTFtkqt8DzwvHv5ktDOs2NuZHH8w==
dependencies:
"@cerc-io/cache" "^0.2.98-patch.3"
"@cerc-io/ipld-eth-client" "^0.2.98-patch.3"
"@cerc-io/util" "^0.2.98-patch.3"
"@cerc-io/cache" "^0.2.98-patch.2"
"@cerc-io/ipld-eth-client" "^0.2.98-patch.2"
"@cerc-io/util" "^0.2.98-patch.2"
chai "^4.3.4"
ethers "^5.4.4"
left-pad "^1.3.0"
mocha "^8.4.0"
"@cerc-io/solidity-mapper@0.2.98-patch.3", "@cerc-io/solidity-mapper@^0.2.98-patch.3":
version "0.2.98-patch.3"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fsolidity-mapper/-/0.2.98-patch.3/solidity-mapper-0.2.98-patch.3.tgz#6d067aba1185069791628fca9bb80f044e9d148f"
integrity sha512-3aD0lVE4afLloCGPKWGTioi8r/bQtp00vHIdMjvKPuvDQxcgFouM3fme3xqy0gVdGFVjhCeHUJrHdawXXQmm3w==
"@cerc-io/solidity-mapper@0.2.98-patch.2", "@cerc-io/solidity-mapper@^0.2.98-patch.2":
version "0.2.98-patch.2"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fsolidity-mapper/-/0.2.98-patch.2/solidity-mapper-0.2.98-patch.2.tgz#6b82c09cc891cc47c56d00705d83039e65a84aee"
integrity sha512-sSxLfM+xuDJwGbW2ztho0Xog6XOMe9b7Z+XMOQT/PVpNhBUNiRZ9j5TnPrbKnCC8N132pVApo0FHzgROQYznbg==
dependencies:
dotenv "^10.0.0"
@ -477,15 +477,15 @@
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fts-channel/-/1.0.3-ts-nitro-0.1.1/ts-channel-1.0.3-ts-nitro-0.1.1.tgz#0768781313a167295c0bf21307f47e02dc17e936"
integrity sha512-2jFICUSyffuZ+8+qRhXuLSJq4GJ6Y02wxiXoubH0Kzv2lIKkJtWICY1ZQQhtXAvP0ncAQB85WJHqtqwH8l7J3Q==
"@cerc-io/util@0.2.98-patch.3", "@cerc-io/util@^0.2.98-patch.3":
version "0.2.98-patch.3"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Futil/-/0.2.98-patch.3/util-0.2.98-patch.3.tgz#2e4bf7faff6685f791ebc8bcd9a6247f3aac7739"
integrity sha512-Z4OL2bgqpZnnIF03bLVxGvU2jY4HvsrRmWLxre0T0PS4SLPJk5OccXdynNSF3BsFRy2k0nl5Nd7DZepHiEy3GQ==
"@cerc-io/util@0.2.98-patch.2", "@cerc-io/util@^0.2.98-patch.2":
version "0.2.98-patch.2"
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Futil/-/0.2.98-patch.2/util-0.2.98-patch.2.tgz#f306d4087b55f87ac16731544a19fe482454eb20"
integrity sha512-oYjH7n+2ivf6/chDFRgAuwXeQk2ZW/ZnVWVzHMf9avQIdVLoQF7XU8fpfckKTHbMPek4yV8C+Mb3EmKwREpopQ==
dependencies:
"@apollo/utils.keyvaluecache" "^1.0.1"
"@cerc-io/nitro-node" "^0.1.15"
"@cerc-io/peer" "^0.2.98-patch.3"
"@cerc-io/solidity-mapper" "^0.2.98-patch.3"
"@cerc-io/peer" "0.2.98"
"@cerc-io/solidity-mapper" "^0.2.98-patch.2"
"@cerc-io/ts-channel" "1.0.3-ts-nitro-0.1.1"
"@ethersproject/properties" "^5.7.0"
"@ethersproject/providers" "^5.4.4"