{"id":"b-j-roberts/starknet-luau","name":"starknet-luau","scope":"b-j-roberts","platform":"roblox","description":"Pure Luau SDK for Starknet blockchain interaction from Roblox games","version":"0.2.0","latest":"0.2.0","versions":["0.1.0","0.2.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{"evaera/promise":{"version":"^3.1.0","alias":"Promise"}},"integrity":"c2197799250fccd30a775853ac90e16b8dbd9f96e3ad3f063ff5d3e3c7029324","likes":0,"downloads":0,"install":"forest install b-j-roberts/starknet-luau","url":"https://forest.dev/p/roblox/b-j-roberts/starknet-luau","files":"https://api.forest.dev/ai/package/roblox/b-j-roberts/starknet-luau/files","readme":"# starknet-luau\n\n[![CI](https://github.com/b-j-roberts/starknet-luau/actions/workflows/ci.yml/badge.svg)](https://github.com/b-j-roberts/starknet-luau/actions/workflows/ci.yml)\n[![Version](https://img.shields.io/badge/version-0.2.0-blue)](https://github.com/b-j-roberts/starknet-luau/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n\nPure Luau SDK for interacting with the Starknet blockchain from Roblox games. Provides cryptographic primitives, account management, transaction building/signing, contract interaction, paymaster-sponsored transactions, and RPC connectivity -- all implemented in Luau with no external native dependencies.\n\n## Features\n\n- Player onboarding lifecycle management\n- Encrypted key storage via DataStore\n- SNIP-29 paymaster integration (AVNU, policy engine, per-player budgets)\n- Deploy account orchestration with batch deploy for game onboarding\n- Request queuing with priority batching and response caching\n- Event polling with DataStore persistence\n- V3 INVOKE and DEPLOY_ACCOUNT transaction building and signing\n- ERC-20 and ERC-721 presets\n- ABI-driven contract interaction with recursive Cairo type codec\n- Full Stark-curve cryptography (BigInt, ECDSA, Poseidon, Pedersen, Keccak, SHA-256)\n- SNIP-9 outside execution (meta-transactions)\n- SNIP-12 typed data signing (LEGACY Pedersen + ACTIVE Poseidon)\n- Typed error hierarchy with numeric error codes\n\n## Installation\n\n**Via Pesde:**\n```toml\n[dependencies]\nstarknet_luau = { name = \"magic/starknet_luau\", version = \"^0.2.0\" }\n```\n\n> **Note:** Pesde installs packages to `roblox_packages/` by default. Your require path will be:\n> ```luau\n> local Starknet = require(game.ReplicatedStorage.roblox_packages.StarknetLuau)\n> ```\n\n**Via Wally:**\n```toml\n[dependencies]\nstarknet-luau = \"b-j-roberts/starknet-luau@0.2.0\"\n```\n\n**Manual (.rbxm):**\nDownload the latest `.rbxm` from [Releases](../../releases) and drop it into your project.\n\n## Quick Start\n\n```luau\nlocal Starknet = require(game.ReplicatedStorage.Packages.StarknetLuau)\n\n-- Create a provider\nlocal provider = Starknet.provider.RpcProvider.new(\"https://api.zan.top/public/starknet-sepolia\")\n\n-- Get the latest block number\nprovider:getBlockNumber():andThen(function(blockNumber)\n    print(\"Current block:\", blockNumber)\nend)\n\n-- Read from a contract\nlocal contract = Starknet.contract.Contract.new(provider, contractAddress, abi)\ncontract:call(\"balanceOf\", { accountAddress }):andThen(function(balance)\n    print(\"Balance:\", balance)\nend)\n```\n\n## Documentation\n\n| Guide | Description |\n|-------|-------------|\n| [Getting Started](docs/guides/getting-started.md) | Installation, basic setup, first transaction |\n| [Contract Interaction](docs/guides/contracts.md) | Reading state, writing transactions, multicall, presets |\n| [Account Management](docs/guides/accounts.md) | Key generation, address derivation, account types, nonce handling |\n| [Common Patterns](docs/guides/patterns.md) | NFT gating, token rewards, onchain leaderboards |\n| [Roblox Considerations](docs/guides/roblox.md) | Rate limits, server-side patterns, security best practices |\n| [Crypto Deep Dive](docs/guides/crypto.md) | Understanding BigInt, StarkField, curves, hashes, ECDSA |\n| [API Reference](docs/guides/api-reference.md) | Complete API documentation for all modules |\n\n## Examples\n\n| Example | Description |\n|---------|-------------|\n| [read-contract.luau](examples/read-contract.luau) | Read ERC-20 token balances from Starknet |\n| [send-transaction.luau](examples/send-transaction.luau) | Send an INVOKE transaction |\n| [deploy-account.luau](examples/deploy-account.luau) | Deploy a new Starknet account |\n| [player-onboarding.luau](examples/player-onboarding.luau) | Full player lifecycle with KeyStore + OnboardingManager |\n| [sponsored-transaction.luau](examples/sponsored-transaction.luau) | Gasless transactions via paymaster |\n| [multicall.luau](examples/multicall.luau) | Batch multiple calls in a single transaction |\n| [nft-gate.luau](examples/nft-gate.luau) | Gate game content behind NFT ownership |\n| [leaderboard.luau](examples/leaderboard.luau) | Onchain leaderboard integration |\n| [typed-data.luau](examples/typed-data.luau) | SNIP-12 typed data signing |\n| [outside-execution.luau](examples/outside-execution.luau) | SNIP-9 meta-transactions |\n| [event-listener.luau](examples/event-listener.luau) | Poll and process onchain events |\n| [provider-features.luau](examples/provider-features.luau) | Request queuing, caching, rate limiting |\n| [error-handling.luau](examples/error-handling.luau) | Typed error handling patterns |\n\n## API Overview\n\n| Module | Description |\n|--------|-------------|\n| `wallet` | Account (OZ/Argent/Braavos), AccountType, AccountFactory, TypedData (SNIP-12), OutsideExecution (SNIP-9), KeyStore, OnboardingManager |\n| `contract` | Contract (ABI-driven), AbiCodec (recursive Cairo codec), ERC20, ERC721, PresetFactory |\n| `paymaster` | PaymasterRpc (SNIP-29), AvnuPaymaster, PaymasterPolicy, PaymasterBudget, SponsoredExecutor |\n| `provider` | RpcProvider (22+ RPC methods), JsonRpcClient, EventPoller, RequestQueue, ResponseCache, NonceManager |\n| `tx` | TransactionBuilder, TransactionHash (V3 INVOKE + DEPLOY_ACCOUNT), CallData encoding |\n| `crypto` | BigInt, StarkField, StarkScalarField, StarkCurve, Poseidon, Pedersen, Keccak, SHA256, ECDSA, FieldFactory |\n| `signer` | StarkSigner with RFC 6979 deterministic signing |\n| `errors` | StarknetError (typed hierarchy), ErrorCodes (numeric constants) |\n| `shared` | interfaces, HexUtils, BufferUtils, ByteArray, TestableDefaults (internal) |\n\n## Project Structure\n\n```\nstarknet-luau/\n├── src/\n│   ├── init.luau               # Main entry point / barrel exports (9 namespaces)\n│   ├── constants.luau          # Chain IDs, class hashes, token addresses, SDK version\n│   ├── crypto/                 # Cryptographic primitives (BigInt, fields, curves, hashes, ECDSA)\n│   ├── signer/                 # Stark ECDSA signing (RFC 6979)\n│   ├── provider/               # RPC client, event polling, queue, cache, nonce manager\n│   ├── tx/                     # Transaction building, hashing, calldata encoding\n│   ├── wallet/                 # Account management, key store, onboarding, SNIP-9/12\n│   ├── contract/               # ABI-driven contract interface, codec, ERC presets\n│   ├── paymaster/              # SNIP-29 paymaster, AVNU, policy, budget, sponsored executor\n│   ├── errors/                 # Typed error hierarchy and numeric error codes\n│   └── shared/                 # Internal utilities (interfaces, hex, buffer, byte array)\n├── tests/                      # Lune test specs (50 spec files, 2,846 tests)\n├── examples/                   # Runnable example scripts (13 examples)\n├── docs/                       # SPEC.md, ROADMAP.md, and guides\n├── .github/workflows/          # CI + Release automation\n├── default.project.json        # Rojo project (library)\n├── dev.project.json            # Rojo project (development)\n├── rokit.toml                  # Toolchain versions\n├── wally.toml                  # Package manifest (Wally)\n├── pesde.toml                  # Package manifest (Pesde)\n└── Makefile                    # Build commands\n```\n\n## Development\n\n### Prerequisites\n\n- [Rokit](https://github.com/rojo-rbx/rokit) v0.6+ (toolchain manager — installs Rojo, Wally, Lune, Selene, StyLua)\n- [Pesde](https://pesde.dev) (optional, if using Pesde for dependencies)\n\n### Setup\n\n```bash\nrokit install       # Install rojo, wally, lune, selene, stylua\nmake install        # Install Wally packages + generate types\nrojo serve          # Start live sync to Roblox Studio\n```\n\n### Commands\n\n```bash\nmake install        # Install deps via Wally, generate sourcemap + package types\nmake pesde-install  # Install deps via Pesde\nmake serve          # Start Rojo live sync\nmake build          # Build .rbxm model file\nmake test           # Run tests with Lune\nmake lint           # Lint with Selene\nmake fmt            # Format with StyLua\nmake check          # Run lint + fmt check + test\n```\n\n## Contributing\n\n1. Fork the repo\n2. Run `rokit install` to set up the toolchain\n3. Run `make install` to install dependencies\n4. Run `make check` before submitting a PR\n\n## License\n\n[MIT](LICENSE)\n","readmeTruncated":false}