├── .github └── workflows │ └── nodejs.yml.disabled ├── .gitignore ├── .husky └── pre-push ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .verdaccio └── config.yml ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── aiken.lock ├── documentation ├── README.md ├── game-design-considerations.md ├── implementing-a-game-state-machine.md ├── modules.png ├── paima-assertions.md └── paimaSM.md ├── eslint.config.js ├── nx.json ├── package-lock.json ├── package.json ├── packages ├── admin-panel │ ├── .gitignore │ ├── index.html │ ├── package.json │ ├── src │ │ ├── App.css │ │ ├── App.tsx │ │ ├── ControlPanel.tsx │ │ ├── InfoPanel.tsx │ │ ├── ethereum.ts │ │ ├── favicon.svg │ │ ├── hooks │ │ │ └── useInterval.ts │ │ ├── index.css │ │ ├── main.tsx │ │ ├── tx-template.ts │ │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── batcher │ ├── .env.localhost │ ├── .gitignore │ ├── README.md │ ├── address-validator │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── date-utils.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── batcher-standalone │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── esbuildconfig.cjs │ │ ├── package.json │ │ ├── scripts │ │ │ ├── docker │ │ │ │ ├── Dockerfile │ │ │ │ ├── docker-compose.yml │ │ │ │ ├── shutdown.sh │ │ │ │ └── start.sh │ │ │ └── post_build.sh │ │ ├── src │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── batcher-transaction-poster │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── avail.ts │ │ │ ├── evm.ts │ │ │ ├── gas-limit.ts │ │ │ ├── index.ts │ │ │ └── transactionPoster.ts │ │ └── tsconfig.json │ ├── db │ │ ├── .gitignore │ │ ├── README.md │ │ ├── migrations │ │ │ ├── down.sql │ │ │ └── up.sql │ │ ├── package.json │ │ ├── pgtypedconfig.json │ │ ├── src │ │ │ ├── index.ts │ │ │ └── sql │ │ │ │ ├── queries.queries.ts │ │ │ │ └── queries.sql │ │ └── tsconfig.json │ ├── game-input-validator │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── default-validator.ts │ │ │ ├── empty-validator.ts │ │ │ ├── errors.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── runtime │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── index.ts │ │ │ ├── pg │ │ │ │ └── pgPool.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── tsconfig.json │ ├── utils │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── config-validation.ts │ │ │ ├── config.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── version.ts │ │ └── tsconfig.json │ └── webserver │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ ├── index.ts │ │ └── recaptcha.ts │ │ └── tsconfig.json ├── build-utils │ ├── paima-build-utils │ │ ├── README.md │ │ ├── package.json │ │ ├── scripts │ │ │ ├── change-db.js │ │ │ ├── copyAssets.cjs │ │ │ └── esbuild.sh │ │ ├── src │ │ │ ├── middleware-esbuildconfig.template.cts │ │ │ ├── middleware-esbuildconfig.template.mts │ │ │ ├── standalone-esbuildconfig.template.cts │ │ │ └── standalone-esbuildconfig.template.mts │ │ ├── tsconfig.base.json │ │ ├── tsconfig.cjs.json │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── paima-plugin-viem │ │ └── src │ │ │ └── index.ts │ └── tsconfig.json ├── cardano-contracts │ ├── aiken-mdx │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── components │ │ │ │ ├── aiken │ │ │ │ │ ├── AikenBaseType.tsx │ │ │ │ │ ├── AikenConstructorMap.tsx │ │ │ │ │ ├── AikenConstructorMapField.tsx │ │ │ │ │ ├── AikenConstructorSimple.tsx │ │ │ │ │ ├── AikenConstructorTuple.tsx │ │ │ │ │ ├── AikenDatum.tsx │ │ │ │ │ ├── AikenDefinitionBlock.tsx │ │ │ │ │ ├── AikenDefinitions.tsx │ │ │ │ │ ├── AikenEnum.tsx │ │ │ │ │ ├── AikenListType.tsx │ │ │ │ │ ├── AikenMapType.tsx │ │ │ │ │ ├── AikenParameter.tsx │ │ │ │ │ ├── AikenProject.tsx │ │ │ │ │ ├── AikenRedeemer.tsx │ │ │ │ │ ├── AikenTupleType.tsx │ │ │ │ │ ├── AikenValidator.tsx │ │ │ │ │ ├── AikenValidators.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── utils │ │ │ │ │ ├── CommentBlock.tsx │ │ │ │ │ ├── HeaderWrapper.tsx │ │ │ │ │ ├── OutlineBlock.tsx │ │ │ │ │ └── index.ts │ │ │ ├── context │ │ │ │ ├── AnchorProvider.tsx │ │ │ │ ├── IsLocalProvider.tsx │ │ │ │ ├── TypesProvider.tsx │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── render.mts │ │ │ └── templates │ │ │ │ ├── plutus.hbs │ │ │ │ └── prelude.hbs │ │ ├── test │ │ │ ├── .gitignore │ │ │ ├── aiken-mdx-test │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── aiken.lock │ │ │ │ ├── aiken.toml │ │ │ │ ├── lib │ │ │ │ │ └── aiken-mdx-test │ │ │ │ │ │ ├── utils.ak │ │ │ │ │ │ └── validation.ak │ │ │ │ ├── plutus.json │ │ │ │ └── validators │ │ │ │ │ └── whirl.ak │ │ │ └── multiple.hbs │ │ └── tsconfig.json │ └── inverse-whirlpool │ │ ├── .gitignore │ │ ├── README.md │ │ ├── aiken.toml │ │ ├── lib │ │ └── inverse_whirlpool │ │ │ ├── conversion.ak │ │ │ ├── tests │ │ │ └── unit │ │ │ │ └── conversions.ak │ │ │ ├── types │ │ │ ├── actions.ak │ │ │ └── data.ak │ │ │ ├── utils.ak │ │ │ └── validation.ak │ │ ├── package.json │ │ ├── src │ │ ├── actions.js │ │ ├── contract.js │ │ ├── main.js │ │ ├── package.json │ │ └── util.js │ │ └── validators │ │ ├── true.ak │ │ └── whirl.ak ├── contracts │ └── evm-contracts │ │ ├── .gitignore │ │ ├── README.md │ │ ├── contracts │ │ ├── AnnotatedMintNft.sol │ │ ├── BaseState.sol │ │ ├── ERC1967.sol │ │ ├── Erc20NftSale.sol │ │ ├── GenericPayment.sol │ │ ├── NativeNftSale.sol │ │ ├── PaimaL2Contract.sol │ │ ├── Proxy │ │ │ ├── Erc20NftSaleProxy.sol │ │ │ ├── GenericPaymentProxy.sol │ │ │ ├── NativeNftSaleProxy.sol │ │ │ └── OrderbookDexProxy.sol │ │ ├── README.md │ │ ├── State.sol │ │ ├── dev │ │ │ ├── ERC721Dev.sol │ │ │ ├── Erc20Dev.sol │ │ │ ├── NativeNftSaleUpgradeDev.sol │ │ │ ├── NftSaleUpgradeDev.sol │ │ │ ├── NftTypeMapper.sol │ │ │ ├── Token.sol │ │ │ └── UpgradeDev.sol │ │ ├── orderbook │ │ │ ├── IOrderbookDex.sol │ │ │ └── OrderbookDex.sol │ │ └── token │ │ │ ├── IERC4906Agnostic.sol │ │ │ ├── IInverseAppProjected1155.sol │ │ │ ├── IInverseAppProjectedNft.sol │ │ │ ├── IInverseBaseProjected1155.sol │ │ │ ├── IInverseBaseProjectedNft.sol │ │ │ ├── IInverseProjected1155.sol │ │ │ ├── IInverseProjectedNft.sol │ │ │ ├── ITokenUri.sol │ │ │ ├── IUri.sol │ │ │ ├── InverseAppProjected1155.sol │ │ │ ├── InverseAppProjectedNft.sol │ │ │ ├── InverseBaseProjected1155.sol │ │ │ └── InverseBaseProjectedNft.sol │ │ ├── docs │ │ └── templates │ │ │ ├── contract.hbs │ │ │ ├── helpers.js │ │ │ ├── page.hbs │ │ │ └── properties.js │ │ ├── foundry.toml │ │ ├── hardhat.config.ts │ │ ├── package.json │ │ ├── prepare.sh │ │ ├── src │ │ ├── common.ts │ │ ├── deployment.ts │ │ ├── index.ts │ │ ├── paimaL2.ts │ │ └── recommendedHardhat.ts │ │ ├── test-lib │ │ ├── StdInvariant.sol │ │ ├── cheatcodes.sol │ │ ├── console.sol │ │ └── ctest.sol │ │ ├── test │ │ ├── InverseAppProjected1155.t.sol │ │ ├── InverseAppProjectedNft.t.sol │ │ ├── InverseBaseProjected1155.t.sol │ │ ├── InverseBaseProjectedNft.t.sol │ │ ├── OrderbookDex.t.sol │ │ ├── OrderbookDexInvariant.t.sol │ │ └── PaimaL2ContractTest.sol │ │ └── tsconfig.json ├── engine │ └── tsconfig.json ├── node-sdk │ ├── paima-broker │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── event-broker.ts │ │ │ └── index.ts │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── paima-db │ │ ├── README.md │ │ ├── docker-compose.yml │ │ ├── docker-postgres.sh │ │ ├── migrations │ │ │ ├── down.sql │ │ │ └── up.sql │ │ ├── package.json │ │ ├── pgtypedconfig.json │ │ ├── src │ │ │ ├── data-migrations.ts │ │ │ ├── database-validation.ts │ │ │ ├── delegate-wallet.ts │ │ │ ├── event-indexing.ts │ │ │ ├── index.ts │ │ │ ├── paima-tables.ts │ │ │ ├── pg-connection.ts │ │ │ ├── pg-tx.ts │ │ │ ├── postgres-metadata.ts │ │ │ ├── register-events.ts │ │ │ ├── scheduled-constructors.ts │ │ │ ├── sql │ │ │ │ ├── achievements.queries.ts │ │ │ │ ├── achievements.sql │ │ │ │ ├── block-heights.queries.ts │ │ │ │ ├── block-heights.sql │ │ │ │ ├── cardano-last-epoch.queries.ts │ │ │ │ ├── cardano-last-epoch.sql │ │ │ │ ├── cde-cardano-asset-utxos.queries.ts │ │ │ │ ├── cde-cardano-asset-utxos.sql │ │ │ │ ├── cde-cardano-mint-burn.queries.ts │ │ │ │ ├── cde-cardano-mint-burn.sql │ │ │ │ ├── cde-cardano-pool-delegation.queries.ts │ │ │ │ ├── cde-cardano-pool-delegation.sql │ │ │ │ ├── cde-cardano-projected-nft.queries.ts │ │ │ │ ├── cde-cardano-projected-nft.sql │ │ │ │ ├── cde-cardano-transfer.queries.ts │ │ │ │ ├── cde-cardano-transfer.sql │ │ │ │ ├── cde-cursor-tracking-pagination.queries.ts │ │ │ │ ├── cde-cursor-tracking-pagination.sql │ │ │ │ ├── cde-erc1155.queries.ts │ │ │ │ ├── cde-erc1155.sql │ │ │ │ ├── cde-erc20-deposit.queries.ts │ │ │ │ ├── cde-erc20-deposit.sql │ │ │ │ ├── cde-erc20.queries.ts │ │ │ │ ├── cde-erc20.sql │ │ │ │ ├── cde-erc6551-registry.queries.ts │ │ │ │ ├── cde-erc6551-registry.sql │ │ │ │ ├── cde-erc721.queries.ts │ │ │ │ ├── cde-erc721.sql │ │ │ │ ├── cde-generic.queries.ts │ │ │ │ ├── cde-generic.sql │ │ │ │ ├── cde-tracking.queries.ts │ │ │ │ ├── cde-tracking.sql │ │ │ │ ├── dynamic-primitives.queries.ts │ │ │ │ ├── dynamic-primitives.sql │ │ │ │ ├── emulated.queries.ts │ │ │ │ ├── emulated.sql │ │ │ │ ├── events.queries.ts │ │ │ │ ├── events.sql │ │ │ │ ├── extensions.queries.ts │ │ │ │ ├── extensions.sql │ │ │ │ ├── midnight-funnel.queries.ts │ │ │ │ ├── midnight-funnel.sql │ │ │ │ ├── mina-checkpoints.queries.ts │ │ │ │ ├── mina-checkpoints.sql │ │ │ │ ├── nonces.queries.ts │ │ │ │ ├── nonces.sql │ │ │ │ ├── rollup_inputs.queries.ts │ │ │ │ ├── rollup_inputs.sql │ │ │ │ ├── statistics.queries.ts │ │ │ │ ├── statistics.sql │ │ │ │ ├── wallet-delegation.queries.ts │ │ │ │ └── wallet-delegation.sql │ │ │ ├── table-types.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── paima-engine │ │ ├── package.json │ │ ├── src │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── paima-funnel │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── cde │ │ │ │ ├── cardanoMintBurn.ts │ │ │ │ ├── cardanoPool.ts │ │ │ │ ├── cardanoProjectedNFT.ts │ │ │ │ ├── cardanoTransfer.ts │ │ │ │ ├── delayedAsset.ts │ │ │ │ ├── dynamic.ts │ │ │ │ ├── erc1155.ts │ │ │ │ ├── erc20.ts │ │ │ │ ├── erc20Deposit.ts │ │ │ │ ├── erc6551Registry.ts │ │ │ │ ├── erc721.ts │ │ │ │ ├── generic.ts │ │ │ │ ├── minaGeneric.ts │ │ │ │ ├── paimaErc721.ts │ │ │ │ └── reading.ts │ │ │ ├── funnels │ │ │ │ ├── BaseFunnel.ts │ │ │ │ ├── FunnelCache.ts │ │ │ │ ├── avail │ │ │ │ │ ├── baseFunnel.ts │ │ │ │ │ ├── cache.ts │ │ │ │ │ ├── createApi.ts │ │ │ │ │ ├── parallelFunnel.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── block │ │ │ │ │ └── funnel.ts │ │ │ │ ├── carp │ │ │ │ │ └── funnel.ts │ │ │ │ ├── emulated │ │ │ │ │ ├── funnel.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── midnight │ │ │ │ │ └── funnel.ts │ │ │ │ ├── mina │ │ │ │ │ └── funnel.ts │ │ │ │ └── parallelEvm │ │ │ │ │ └── funnel.ts │ │ │ ├── index.ts │ │ │ ├── paima-l2-processing.ts │ │ │ ├── reading.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paima-rest │ │ ├── package.json │ │ ├── src │ │ │ ├── EngineService.ts │ │ │ ├── controllers │ │ │ │ ├── AchievementsController.ts │ │ │ │ └── BasicControllers.ts │ │ │ ├── index.ts │ │ │ └── tsoa │ │ │ │ ├── routes.ts │ │ │ │ └── swagger.json │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ └── tsoa.json │ ├── paima-runtime │ │ ├── .gitignore │ │ ├── package.json │ │ ├── public │ │ │ └── asyncapi.html │ │ ├── src │ │ │ ├── cde-config │ │ │ │ ├── loading.ts │ │ │ │ ├── utils.ts │ │ │ │ └── validation.ts │ │ │ ├── evm-rpc │ │ │ │ ├── cache.ts │ │ │ │ ├── eip1193.ts │ │ │ │ ├── mock.ts │ │ │ │ ├── types.ts │ │ │ │ └── validate.ts │ │ │ ├── index.ts │ │ │ ├── nonce-gc.ts │ │ │ ├── run-flag.ts │ │ │ ├── runtime-loops.ts │ │ │ ├── server.ts │ │ │ ├── snapshots.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── test │ │ │ ├── config.test.ts │ │ │ └── example.yml │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── paima-sm │ │ ├── .gitignore │ │ ├── package.json │ │ ├── src │ │ │ ├── cde-cardano-delayed-asset.ts │ │ │ ├── cde-cardano-mint-burn.ts │ │ │ ├── cde-cardano-pool.ts │ │ │ ├── cde-cardano-projected-nft.ts │ │ │ ├── cde-cardano-transfer.ts │ │ │ ├── cde-erc1155-transfer.ts │ │ │ ├── cde-erc20-deposit.ts │ │ │ ├── cde-erc20-transfer.ts │ │ │ ├── cde-erc6551-registry.ts │ │ │ ├── cde-erc721-mint.ts │ │ │ ├── cde-erc721-transfer.ts │ │ │ ├── cde-evm-dynamic-primitive.ts │ │ │ ├── cde-generic.ts │ │ │ ├── cde-midnight-contract-state.ts │ │ │ ├── cde-processing.ts │ │ │ ├── delegate-wallet.ts │ │ │ ├── index.ts │ │ │ ├── randomness.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── paima-utils-backend │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── achievements.ts │ │ │ ├── cde-access-internals.ts │ │ │ ├── cde-access.ts │ │ │ ├── index.ts │ │ │ ├── security.ts │ │ │ └── types.ts │ │ └── tsconfig.json │ ├── publish-wrapper │ │ ├── README.md │ │ ├── package.json │ │ ├── project.json │ │ ├── src │ │ │ ├── broker.ts │ │ │ ├── db.ts │ │ │ ├── engine.ts │ │ │ └── utils-backend.ts │ │ └── tsconfig.json │ └── tsconfig.json └── paima-sdk │ ├── paima-chain-types │ ├── package.json │ ├── src │ │ ├── hash.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ ├── paima-concise │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ ├── PaimaParser.ts │ │ ├── batcher.ts │ │ ├── builder.ts │ │ ├── consumer.ts │ │ ├── index.ts │ │ ├── types.ts │ │ ├── utils.ts │ │ └── v1 │ │ │ ├── builder.ts │ │ │ ├── consts.ts │ │ │ └── utils.ts │ ├── test │ │ ├── paima-parser.array-optional.test.ts │ │ ├── paima-parser.at-user.test.ts │ │ ├── paima-parser.base64.test.ts │ │ ├── paima-parser.chess.test.ts │ │ ├── paima-parser.optional.test.ts │ │ ├── paima-parser.single.test.ts │ │ └── paima-parser.test.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ ├── paima-config │ ├── package.json │ ├── src │ │ ├── ConfigBuilder.ts │ │ ├── configCheck.ts │ │ ├── index.ts │ │ └── schema │ │ │ ├── funnel │ │ │ ├── evm.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ ├── index.ts │ │ │ ├── network │ │ │ ├── evm.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ ├── primitive │ │ │ ├── evm.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ │ └── utils.ts │ ├── test │ │ └── config.spec.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ ├── paima-crypto │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ ├── IVerify.ts │ │ ├── algorand.ts │ │ ├── cardano.ts │ │ ├── evm.ts │ │ ├── index.ts │ │ ├── mina.ts │ │ └── polkadot.ts │ ├── test │ │ └── index.test.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ ├── paima-events │ ├── README.md │ ├── package.json │ ├── src │ │ ├── app-events.ts │ │ ├── asyncapi.ts │ │ ├── builtin-event-utils.ts │ │ ├── builtin-events.ts │ │ ├── event-connect.ts │ │ ├── event-manager.ts │ │ ├── evm.ts │ │ ├── index.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── test │ │ ├── builtin.yml │ │ ├── hashed.yml │ │ └── index.test.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ ├── paima-executors │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── match_executor.ts │ │ ├── round_executor.ts │ │ └── types.ts │ └── tsconfig.json │ ├── paima-mw-core │ ├── README.md │ ├── esbuildconfig.cjs │ ├── package.json │ ├── src │ │ ├── delegate-wallet │ │ │ └── index.ts │ │ ├── endpoints │ │ │ ├── accounts.ts │ │ │ ├── internal.ts │ │ │ ├── queries.ts │ │ │ └── utility.ts │ │ ├── errors.ts │ │ ├── global.d.ts │ │ ├── helpers │ │ │ ├── auxiliary-queries.ts │ │ │ ├── clients.ts │ │ │ ├── data-processing.ts │ │ │ ├── general.ts │ │ │ ├── logging.ts │ │ │ ├── paima-node-rest-schema.d.ts │ │ │ ├── posting.ts │ │ │ ├── query-constructors.ts │ │ │ └── transaction-building.ts │ │ ├── index.ts │ │ ├── name-generation │ │ │ ├── adjectives.ts │ │ │ ├── index.ts │ │ │ └── nouns.ts │ │ ├── state.ts │ │ ├── types.ts │ │ └── wallets │ │ │ ├── algorand.ts │ │ │ ├── avail.ts │ │ │ ├── cardano.ts │ │ │ ├── evm │ │ │ ├── ethers.ts │ │ │ └── injected.ts │ │ │ ├── mina.ts │ │ │ ├── polkadot.ts │ │ │ ├── wallet-modes.ts │ │ │ └── wallets.ts │ ├── tsconfig.json │ └── web │ │ ├── .gitignore │ │ ├── TemplateData │ │ ├── bg-green-oval-up.png │ │ ├── bg-green-oval-up.png.meta │ │ ├── catapult_background.png │ │ ├── catapult_background.png.meta │ │ ├── favicon.ico │ │ ├── favicon.ico.meta │ │ ├── fullscreen.svg │ │ ├── fullscreen.svg.meta │ │ ├── paima-loading.gif │ │ ├── paima-loading.gif.meta │ │ ├── paima-logo.svg │ │ ├── paima-logo.svg.meta │ │ ├── progress-bar-empty.png │ │ ├── progress-bar-empty.png.meta │ │ ├── progress-bar-full.png │ │ ├── progress-bar-full.png.meta │ │ ├── style.css │ │ └── tailwind.css │ │ └── index.html │ ├── paima-prando │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ └── tsconfig.json │ ├── paima-precompiles │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ ├── paima-providers │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ ├── IProvider.ts │ │ ├── algorand.ts │ │ ├── avail.ts │ │ ├── cardano.ts │ │ ├── errors.ts │ │ ├── evm │ │ │ ├── ethers.ts │ │ │ ├── index.ts │ │ │ ├── injected.ts │ │ │ └── types.ts │ │ ├── index.ts │ │ ├── mina.ts │ │ ├── polkadot.ts │ │ ├── utils.ts │ │ └── window.ts │ ├── test │ │ └── index.test.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ ├── paima-sdk │ ├── README.md │ ├── package.json │ ├── project.json │ ├── src │ │ ├── chain-types.ts │ │ ├── concise.ts │ │ ├── config.ts │ │ ├── crypto.ts │ │ ├── events.ts │ │ ├── executors.ts │ │ ├── mw-core.ts │ │ ├── prando.ts │ │ ├── precompiles.ts │ │ ├── providers.ts │ │ └── utils.ts │ └── tsconfig.json │ ├── paima-utils │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ ├── artifacts │ │ │ ├── ERC165Contract.json │ │ │ ├── ERC165Contract.ts │ │ │ ├── ERC20Contract.json │ │ │ ├── ERC20Contract.ts │ │ │ ├── ERC6551RegistryContract.json │ │ │ ├── ERC6551RegistryContract.ts │ │ │ ├── ERC721Contract.json │ │ │ ├── ERC721Contract.ts │ │ │ ├── IERC1155Contract.json │ │ │ ├── IERC1155Contract.ts │ │ │ ├── OldERC6551RegistryContract.json │ │ │ ├── OldERC6551RegistryContract.ts │ │ │ ├── PaimaERC721Contract.json │ │ │ ├── PaimaERC721Contract.ts │ │ │ ├── PaimaL2Contract.json │ │ │ └── PaimaL2Contract.ts │ │ ├── captcha.ts │ │ ├── config.ts │ │ ├── config │ │ │ ├── loading.ts │ │ │ └── singleton.ts │ │ ├── constants.ts │ │ ├── contracts.ts │ │ ├── index.ts │ │ ├── logging.ts │ │ ├── security │ │ │ └── parse.ts │ │ └── types │ │ │ ├── index.ts │ │ │ ├── json-query.ts │ │ │ └── misc.ts │ ├── test │ │ └── security │ │ │ ├── config.yml │ │ │ └── index.test.ts │ ├── tsconfig.build.json │ └── tsconfig.json │ └── tsconfig.json ├── project.json ├── tools └── scripts │ ├── bump-version.sh │ ├── check-implicit-dependencies.ts │ ├── publish-local.mts │ └── unpack.sh ├── tsconfig.base.json └── wipe.sh /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bin 3 | .nx 4 | **/dist 5 | **/build 6 | **/*.tsbuildinfo 7 | 8 | # logs 9 | *.log 10 | 11 | .idea/ -------------------------------------------------------------------------------- /.husky/pre-push: -------------------------------------------------------------------------------- 1 | npm run cilint 2 | npm run test 3 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | lts/iron -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.queries.ts 2 | **/*.d.ts 3 | contract-types/ 4 | packaged/ 5 | packages/engine/paima-rest/src/tsoa/routes.ts 6 | packages/contracts/evm-contracts/test-lib 7 | packages/contracts/evm-contracts/typechain-types 8 | **/dist 9 | **/build 10 | bin/ 11 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "semi": true, 5 | "singleQuote": true, 6 | "printWidth": 100, 7 | "arrowParens": "avoid", 8 | "plugins": ["prettier-plugin-solidity"], 9 | "overrides": [ 10 | { 11 | "files": "*.sol", 12 | "options": { 13 | "tabWidth": 4, 14 | "singleQuote": false, 15 | "arrowParens": "avoid", 16 | "parser": "solidity-parse" 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /.verdaccio/config.yml: -------------------------------------------------------------------------------- 1 | # path to a directory with all packages 2 | storage: ../build/local-registry/storage 3 | 4 | auth: 5 | htpasswd: 6 | file: ./htpasswd 7 | 8 | # a list of other known repositories we can talk to 9 | uplinks: 10 | npmjs: 11 | url: https://registry.npmjs.org/ 12 | maxage: 60m 13 | max_fails: 20 14 | fail_timeout: 2m 15 | yarn: 16 | url: https://registry.yarnpkg.com 17 | maxage: 60m 18 | max_fails: 20 19 | fail_timeout: 2m 20 | 21 | packages: 22 | # for @paima packages, we never want to fallback to the npm registry 23 | # otherwise, the local version will get rejected because the npm registry has a package with the same version 24 | '@paima/*': 25 | # allow all users full access (since it's a local registry) 26 | access: $all 27 | publish: $all 28 | unpublish: $all 29 | 30 | '**': 31 | access: $all 32 | publish: $all 33 | unpublish: $all 34 | proxy: npmjs # fallback to npmjs for non-paima package. This is needed for transitive dependencies to work 35 | 36 | # log settings 37 | log: 38 | type: stdout 39 | format: pretty 40 | level: warn 41 | 42 | publish: 43 | allow_offline: true # set offline to true to allow publish offline 44 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.tabSize": 2, 3 | "editor.formatOnSave": true, 4 | "[typescript]": { 5 | "editor.defaultFormatter": "esbenp.prettier-vscode" 6 | }, 7 | "[typescriptreact]": { 8 | "editor.defaultFormatter": "esbenp.prettier-vscode" 9 | }, 10 | "[solidity]": { 11 | "editor.defaultFormatter": "esbenp.prettier-vscode" 12 | }, 13 | "files.associations": { 14 | ".env.*": "properties" 15 | }, 16 | "[sql]": { 17 | "editor.formatOnSave": false 18 | }, 19 | "[json][jsonc][json5]": { 20 | "editor.formatOnSave": true 21 | }, 22 | "eslint.experimental.useFlatConfig": true, 23 | } 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Paima Studios 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /aiken.lock: -------------------------------------------------------------------------------- 1 | # This file was generated by Aiken 2 | # You typically do not need to edit this file 3 | 4 | [[requirements]] 5 | name = "aiken-lang/stdlib" 6 | version = "1.9.0" 7 | source = "github" 8 | 9 | [[requirements]] 10 | name = "aiken-lang/fuzz" 11 | version = "main" 12 | source = "github" 13 | 14 | [[requirements]] 15 | name = "aiken-lang/sparse-merkle-tree" 16 | version = "main" 17 | source = "github" 18 | 19 | [[packages]] 20 | name = "aiken-lang/stdlib" 21 | version = "1.9.0" 22 | requirements = [] 23 | source = "github" 24 | 25 | [[packages]] 26 | name = "aiken-lang/fuzz" 27 | version = "main" 28 | requirements = [] 29 | source = "github" 30 | 31 | [[packages]] 32 | name = "aiken-lang/sparse-merkle-tree" 33 | version = "main" 34 | requirements = [] 35 | source = "github" 36 | 37 | [etags] 38 | "aiken-lang/fuzz@main" = [{ secs_since_epoch = 1720184431, nanos_since_epoch = 623504751 }, "a8294651f1577c671d580c99c9bc5445ef1fd44e4aa3dde550434a4cbc8d50b6"] 39 | "aiken-lang/sparse-merkle-tree@main" = [{ secs_since_epoch = 1720184432, nanos_since_epoch = 277332931 }, "076db86c829f1bf2be5e996c9c1a714efcb761452d8abb8ae2b311e95c4aa6ed"] 40 | -------------------------------------------------------------------------------- /documentation/README.md: -------------------------------------------------------------------------------- 1 | # Deprecated docs 2 | 3 | The docs here are deprecated and meant to be slowly replaced by [the new docs](https://docs.paimastudios.com) 4 | -------------------------------------------------------------------------------- /documentation/modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PaimaStudios/paima-engine/0b70d63a217676ce52748a2cd267f5cbed1109e4/documentation/modules.png -------------------------------------------------------------------------------- /packages/admin-panel/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /packages/admin-panel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |15 | Input: 16 | props.setInputString(e.currentTarget.value)} 20 | /> 21 |
22 |