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
115 changes: 88 additions & 27 deletions packages/chain/src/core/environments/development/chain.config.ts
Original file line number Diff line number Diff line change
@@ -1,57 +1,118 @@
import { Runtime } from "@proto-kit/module";
import { Protocol } from "@proto-kit/protocol";
import { AppChain, Sequencer } from "@proto-kit/sequencer";
import {
AppChain,
Sequencer,
PrivateMempool,
TimedBlockTrigger,
SequencerCoreModule,
} from "@proto-kit/sequencer";
import { VanillaGraphqlModules, GraphqlSequencerModule } from "@proto-kit/api";
import { IndexerNotifier } from "@proto-kit/indexer";
import { PrismaRedisDatabase } from "@proto-kit/persistance";
import { BullQueue } from "@proto-kit/deployment";
import {
BlockStorageNetworkStateModule,
InMemoryTransactionSender,
StateServiceQueryModule,
} from "@proto-kit/sdk";
import runtime from "../../../runtime";
import * as protocol from "../../../protocol";

import { Arguments } from "../../../start";
import { Startable } from "@proto-kit/common";
import { DefaultConfigs, DefaultModules } from "@proto-kit/stack";

const settlementEnabled = process.env.PROTOKIT_SETTLEMENT_ENABLED! === "true";
import {
buildCustomTokenConfig,
buildSettlementTokenConfig,
} from "@proto-kit/stack";
import {
baseSettlementSequencerModules,
baseSettlementSequencerModulesConfig,
} from "../../sequencer";

const appChain = AppChain.from({
Runtime: Runtime.from(runtime.modules),
Protocol: Protocol.from({
...protocol.modules,
...(settlementEnabled ? protocol.settlementModules : {}),
...protocol.settlementModules,
}),
Sequencer: Sequencer.from({
// ordering of the modules matters due to dependency resolution
//...DefaultModules.metrics(),
...DefaultModules.prismaRedisDatabase(),
...DefaultModules.core({ settlementEnabled }),
...DefaultModules.redisTaskQueue(),
...DefaultModules.sequencerIndexer(),
Database: PrismaRedisDatabase,
Graphql: GraphqlSequencerModule.from(VanillaGraphqlModules.with({})),
Mempool: PrivateMempool,
BlockTrigger: TimedBlockTrigger,
SequencerCoreModule,
...baseSettlementSequencerModules,
TaskQueue: BullQueue,
IndexerNotifier,
}),
...DefaultModules.appChainBase(),
TransactionSender: InMemoryTransactionSender,
QueryTransportModule: StateServiceQueryModule,
NetworkStateTransportModule: BlockStorageNetworkStateModule,
});

export default async (args: Arguments): Promise<Startable> => {
appChain.configurePartial({
appChain.configure({
Runtime: runtime.config,
Protocol: {
...protocol.config,
...(settlementEnabled ? protocol.settlementModulesConfig : {}),
...protocol.settlementModulesConfig,
},
Sequencer: {
...DefaultConfigs.core({ settlementEnabled, preset: "development" }),
...DefaultConfigs.sequencerIndexer(),
//...DefaultConfigs.metrics({ preset: "development" }),
...DefaultConfigs.redisTaskQueue({
preset: "development",
overrides: {
redisDb: 1,
Graphql: {
...VanillaGraphqlModules.defaultConfig(),
containerConfig: {
port: Number(process.env.PROTOKIT_GRAPHQL_PORT ?? 8080),
host: process.env.PROTOKIT_GRAPHQL_HOST ?? "0.0.0.0",
graphiql: process.env.PROTOKIT_GRAPHIQL_ENABLED !== "false",
},
},
Mempool: {},
BlockTrigger: {
blockInterval: Number(process.env.PROTOKIT_BLOCK_INTERVAL ?? 30000),
produceEmptyBlocks: true,
settlementInterval: Number(
process.env.PROTOKIT_SETTLEMENT_INTERVAL ?? 60000
),
settlementTokenConfig: buildSettlementTokenConfig(
process.env.PROTOKIT_MINA_BRIDGE_CONTRACT_PRIVATE_KEY!,
buildCustomTokenConfig(
process.env.PROTOKIT_CUSTOM_TOKEN_PRIVATE_KEY,
process.env.PROTOKIT_CUSTOM_TOKEN_BRIDGE_PRIVATE_KEY
)
),
},
IndexerNotifier: {},
TaskQueue: {
redis: {
host: process.env.REDIS_HOST ?? "localhost",
port: Number(process.env.REDIS_PORT ?? 6379),
password: process.env.REDIS_PASSWORD ?? "password",
db: 1,
},
},
Database: {
redis: {
host: process.env.REDIS_HOST ?? "localhost",
port: Number(process.env.REDIS_PORT ?? 6379),
password: process.env.REDIS_PASSWORD ?? "password",
},
}),
...DefaultConfigs.prismaRedisDatabase({
preset: "development",
overrides: {
pruneOnStartup: args.pruneOnStartup,
prisma: {
connection: process.env.DATABASE_URL!,
},
}),
pruneOnStartup: args.pruneOnStartup,
},
...baseSettlementSequencerModulesConfig,
SequencerCoreModule: {
BlockProducerModule: {},
BatchProducerModule: {},
SequencerStartupModule: {},
},
},
...DefaultConfigs.appChainBase(),
QueryTransportModule: {},
NetworkStateTransportModule: {},
TransactionSender: {},
});

return appChain;
Expand Down
64 changes: 55 additions & 9 deletions packages/chain/src/core/environments/development/indexer.config.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,67 @@
import { Indexer } from "@proto-kit/indexer";
import {
Indexer,
IndexBlockTask,
IndexBatchTask,
IndexPendingTxTask,
IndexSettlementTask,
GeneratedResolverFactoryGraphqlModule,
} from "@proto-kit/indexer";
import { GraphqlSequencerModule } from "@proto-kit/api";
import { WorkerModule } from "@proto-kit/sequencer";
import { PrismaRedisDatabase } from "@proto-kit/persistance";
import { BullQueue } from "@proto-kit/deployment";
import { Arguments } from "../../../start";
import { Startable } from "@proto-kit/common";
import { DefaultConfigs, DefaultModules } from "@proto-kit/stack";

const indexer = Indexer.from({
...DefaultModules.indexer(),
Database: PrismaRedisDatabase,
TaskQueue: BullQueue,
TaskWorker: WorkerModule.from({
IndexBlockTask,
IndexPendingTxTask,
IndexBatchTask,
IndexSettlementTask,
}),
Graphql: GraphqlSequencerModule.from({
GeneratedResolverFactory: GeneratedResolverFactoryGraphqlModule,
}),
});

export default async (args: Arguments): Promise<Startable> => {
indexer.configurePartial({
...DefaultConfigs.indexer({
preset: "development",
overrides: {
pruneOnStartup: args.pruneOnStartup,
redisDb: 1,
Database: {
redis: {
host: process.env.REDIS_HOST ?? "localhost",
port: Number(process.env.REDIS_PORT ?? 6379),
password: process.env.REDIS_PASSWORD ?? "password",
},
}),
prisma: {
connection: process.env.INDEXER_DATABASE_URL!,
},
pruneOnStartup: args.pruneOnStartup,
},
TaskQueue: {
redis: {
host: process.env.REDIS_HOST ?? "localhost",
port: Number(process.env.REDIS_PORT ?? 6379),
password: process.env.REDIS_PASSWORD ?? "password",
db: 1,
},
},
TaskWorker: {
IndexBlockTask: {},
IndexBatchTask: {},
IndexPendingTxTask: {},
IndexSettlementTask: {},
},
Graphql: {
GeneratedResolverFactory: {},
containerConfig: {
port: Number(process.env.PROTOKIT_INDEXER_GRAPHQL_PORT ?? 8081),
host: process.env.PROTOKIT_INDEXER_GRAPHQL_HOST ?? "0.0.0.0",
graphiql: process.env.PROTOKIT_INDEXER_GRAPHIQL_ENABLED !== "false",
},
},
});
return indexer;
};
Original file line number Diff line number Diff line change
@@ -1,22 +1,43 @@
import { DatabasePruneModule, Processor } from "@proto-kit/processor";
import {
DatabasePruneModule,
Processor,
TimedProcessorTrigger,
BlockFetching,
HandlersExecutor,
ResolverFactoryGraphqlModule,
} from "@proto-kit/processor";
import {
GraphqlSequencerModule,
} from "@proto-kit/api";
import { databaseModule } from "../../processor";
import { Arguments } from "../../../start";
import { Startable } from "@proto-kit/common";
import { DefaultConfigs, DefaultModules } from "@proto-kit/stack";
import { resolvers } from "../../processor/api/resolvers";
import { handlers } from "../../processor/handlers";

const processor = Processor.from({
Database: databaseModule,
DatabasePruneModule: DatabasePruneModule,
...DefaultModules.processor(resolvers, handlers),
GraphqlSequencerModule: GraphqlSequencerModule.from({
ResolverFactory: ResolverFactoryGraphqlModule.from(resolvers),
}),
HandlersExecutor: HandlersExecutor.from(handlers),
BlockFetching,
Trigger: TimedProcessorTrigger,
});

export default async (args: Arguments): Promise<Startable> => {
processor.configurePartial({
...DefaultConfigs.processor({
preset: "development",
}),
HandlersExecutor: {},
BlockFetching: {
url: `http://${process.env.PROTOKIT_PROCESSOR_INDEXER_GRAPHQL_HOST ?? "0.0.0.0"}:${process.env.PROTOKIT_INDEXER_GRAPHQL_PORT ?? 8081}`,
},
Trigger: {
interval: Number(process.env.PROTOKIT_BLOCK_INTERVAL ?? 30000) / 5,
},
GraphqlSequencerModule: {
ResolverFactory: {},
},
Database: {},
DatabasePruneModule: {
pruneOnStartup: args.pruneOnStartup,
Expand Down
37 changes: 17 additions & 20 deletions packages/chain/src/core/environments/development/worker.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,49 +3,46 @@ import { Protocol } from "@proto-kit/protocol";
import {
Sequencer,
AppChain,
LocalTaskWorkerModule,
WorkerModule,
VanillaTaskWorkerModules,
} from "@proto-kit/sequencer";
import { BullQueue } from "@proto-kit/deployment";
import runtime from "../../../runtime";
import * as protocol from "../../../protocol";
import { Arguments } from "../../../start";

import { log, Startable } from "@proto-kit/common";
import { DefaultConfigs, DefaultModules } from "@proto-kit/stack";

const settlementEnabled = process.env.PROTOKIT_SETTLEMENT_ENABLED! === "true";

const appChain = AppChain.from({
Runtime: Runtime.from(runtime.modules),
Protocol: Protocol.from({
...protocol.modules,
...(settlementEnabled ? protocol.settlementModules : {}),
...protocol.settlementModules,
}),
Sequencer: Sequencer.from({
...DefaultModules.remoteWorker(),
...(!settlementEnabled
? {
LocalTaskWorkerModule: LocalTaskWorkerModule.from(
VanillaTaskWorkerModules.withoutSettlement()
),
}
: {}),
TaskQueue: BullQueue,
WorkerModule: WorkerModule.from(VanillaTaskWorkerModules.allTasks()),
}),
});

export default async (args: Arguments): Promise<Startable> => {
appChain.configurePartial({
appChain.configure({
Runtime: runtime.config,
Protocol: {
...protocol.config,
...(settlementEnabled ? protocol.settlementModulesConfig : {}),
...protocol.settlementModulesConfig,
},
Sequencer: DefaultConfigs.worker({
preset: "development",
overrides: {
redisDb: 1,
Sequencer: {
WorkerModule: VanillaTaskWorkerModules.defaultConfig(),
TaskQueue: {
redis: {
host: process.env.REDIS_HOST ?? "redis",
port: Number(process.env.REDIS_PORT ?? 6379),
password: process.env.REDIS_PASSWORD ?? "password",
db: 1,
},
},
}),
},
});

log.setLevel("DEBUG");
Expand Down
Loading