{"id":44917681,"url":"https://github.com/txpipe/asteria-starter-kit","last_synced_at":"2026-02-18T02:36:25.675Z","repository":{"id":308256550,"uuid":"1030388832","full_name":"txpipe/asteria-starter-kit","owner":"txpipe","description":"Get started with your Asteria bot","archived":false,"fork":false,"pushed_at":"2025-09-05T02:42:38.000Z","size":56,"stargazers_count":1,"open_issues_count":2,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-05T04:23:36.217Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/txpipe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-01T14:54:37.000Z","updated_at":"2025-09-05T02:42:41.000Z","dependencies_parsed_at":"2025-08-05T01:18:37.842Z","dependency_job_id":"07db07f4-a93e-4a0f-a6ea-6d71bdb0f4e7","html_url":"https://github.com/txpipe/asteria-starter-kit","commit_stats":null,"previous_names":["txpipe/asteria-starter-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/txpipe/asteria-starter-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fasteria-starter-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fasteria-starter-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fasteria-starter-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fasteria-starter-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/txpipe","download_url":"https://codeload.github.com/txpipe/asteria-starter-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fasteria-starter-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29566410,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-18T02:36:25.608Z","updated_at":"2026-02-18T02:36:25.658Z","avatar_url":"https://github.com/txpipe.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Asteria Starter Kit\n\n## Reference Docs\n\n- [Asteria on-chain design document](https://github.com/txpipe/asteria/blob/main/onchain/docs/design/design.md)\n- [Asteria on-chain validators](https://github.com/txpipe/asteria/tree/main/onchain/src)\n\n## Using Tx3\n\nThis starter kit relies on the [Tx3 toolchain](https://docs.txpipe.io/tx3), a development toolkit for UTxO protocols. Make sure to visite the [Tx3 installation](https://docs.txpipe.io/tx3/installation) guide to setup your system before continuing.\n\nThe `main.tx3` file contains the interface definition for the Asteria protocol. This file uses the Tx3 DSL to describe the different on-chain interactions that your bot may need.\n\nWe encourage you to explore the [Tx3 language](https://docs.txpipe.io/tx3), but if you just want to keep going with Asteria, the important thing to notice is that the `main.tx` file contains definition for several function-like artifacts that describe each of the transaction of the Asteria protocol.\n\n```js\ntx create_ship(\n    // Ship Position X\n    p_pos_x: Int, \n    // Ship Position Y\n    p_pos_y: Int,\n    // Name of the ship\n    ship_name: Bytes,\n    // Name of the pilot\n    pilot_name: Bytes,\n    // The tip of the chain when submitting the Tx\n    // TODO: this won't be necessary on future versions of Tx3\n    tip_slot: Int, \n    // the POSIX timestamp at the time of submitting the Tx\n    last_move_timestamp: Int,\n) {\n    ...\n}\n```\n\nThe body of each of these _functions_ contains the transaction building logic that you need for controlling your Asteria ship.\n\n## Building your bot\n\nFirst you need to install the Node dependencies:\n\n```bash\nnpm install\n```\n\n### Create a wallet for the pilot \n\nThe following command uses cardano-cli to create a new private / public key for the pilot. This is the wallet that will control the actions of the ship.\n\n```\ncardano-cli address key-gen --verification-key-file pilot.vk --signing-key-file pilot.sk\n```\n\nRun the following command to get the address of your new wallet:\n\n```\ncardano-cli address build --payment-verification-key-file pilot.vk --mainnet\n```\n\nMake sure to send some ADA to the address to use as \"gas\" for executing the required transactions.\n\n### Get your wallet private key\n\nIn order to get your wallet private key you can use [cbor.me](https://cbor.me/).\n\nPaste your `cborHex` value from the `pilot.sk` file and you'll get your wallet private key.\n\n### Provide the required env vars\n\nYou need to create a `.env` file with your wallet info:\n\n```env\nPLAYER_PRIVATE_KEY=\"1234\"\nPLAYER_ADDRESS=\"addr...\"\n```\n\n### Create Ship Tx\n\nThis is the first step in order to play the game.\n\nThis transaction creates a `ShipState` UTxO locking min ada, a `ShipToken` (minted in this tx) and an `INITIAL_FUEL` amount of fuel tokens (minted in this tx), specifying in the datum the initial `pos_x` and `pos_y` coordinates of the ship, the ship and pilot token names and the `last_move_latest_time` as the upper bound of the transaction's validity range (posix time). Also adds to the `AsteriaUTxO` value the `SHIP_MINT_LOVELACE_FEE` paid by the user.\n\n![createShip](https://github.com/txpipe/asteria/blob/main/onchain/docs/design/img/createShip.png?raw=true)\n\nYou need to replace the params with the required values in `src/txs/create-ship.ts`:\n\n```ts\nconst positionX = 25; // Replace with your desired start X position\nconst positionY = 25; // Replace with your desired start Y position\nconst shipName = \"SHIP0\"; // Replace 0 with the next ship number\nconst pilotName = \"PILOT0\"; // Replace 0 with the next ship number\nconst tipSlot = 0; // Replace with the latest block slot\n```\n\nRules to take into account:\n\n- the ship number has to be exactly +1 of the last ship minted\n- the tip slot must be recent because it's used during validation of the tx\n- the start position has to be at a certain distance ([manhattan distance](https://en.wikipedia.org/wiki/Taxicab_geometry)) of coordinates (0,0). For the mainnet challenge the minimum distance is `50`. \n\nYou can query the next available ship and pilot token names using the following curl:\n\n```\ncurl --location 'https://8000-ethereal-audience-bb83g6.us1.demeter.run/graphql' \\\n--header 'Content-Type: application/json' \\\n--data '{\"query\":\"query { nextShipTokenName(spacetimePolicyId: \\\"0291ae7aebaf064b785542093c2b13169effb34462301e68d4b44f43\\\", spacetimeAddress: \\\"addr1wypfrtn6awhsvjmc24pqj0ptzvtfalang33rq8ng6j6y7scnlkytx\\\") { shipName pilotName } }\",\"variables\":{}}'\n```\n\nYou can query the tip of the chain using the following curl:\n\n```\ncurl --location 'https://8000-ethereal-audience-bb83g6.us1.demeter.run/graphql' \\\n--header 'Content-Type: application/json' \\\n--data '{\"query\":\"query { lastSlot { slot } }\",\"variables\":{}}'\n```\n\nRun this in order to create and submit the transaction:\n\n```bash\nnpm run create-ship\n```\n\n### Move Ship Tx\n\nWith this transaction you can move the ship through the space.\n\nThis transaction updates the `pos_x`, `pos_y` and `fuel` datum fields of the `ShipState` UTxO by adding the `delta_x` and `delta_y` values specified in the redeemer, and subtracts from the ship value the amount of fuel tokens needed for the displacement (which are burnt in this tx). Also updates the `last_move_latest_time` field with the transaction's validity range latest posix time.\n\n![moveShip](https://github.com/txpipe/asteria/blob/main/onchain/docs/design/img/moveShip.png?raw=true)\n\nYou need to replace the params with the required values in `src/txs/move-ship.ts`:\n\n```ts\nconst deltaX = 5; // Replace with your desired X movement units\nconst deltaY = 5; // Replace with your desired Y movement units\nconst requiredFuel = 1; // Replace with the required fuel for the movement\nconst shipName = \"SHIP0\"; // Replace with your ship name\nconst pilotName = \"PILOT0\"; // Replace with your pilot name\nconst tipSlot = 0; // Replace with the latest block slot\n```\n\nRules to take into account:\n\n- the ship number has to be the one controlled by the pilot token in your wallet.\n- the total distance you travel is constrained by the number of slots between your tx validity range (ttl end - ttl start).\n- the amount of fuel you pass is proportional to the total distance you travel (deltaX + deltaY).\n\n\nRun this in order to create and submit the transaction:\n\n```bash\nnpm run move-ship\n```\n\n### Gather Fuel Tx\n\nWith this transaction you can gather fuel from the fuel pellets for your ship.\n\nUpdates the amount of fuel tokens in both `ShipState` and `PelletState` UTxOs, adding the `amount` (specified in the redeemer) from the first and subtracting it from the latter. Also allows the ship owner to get any amount of the prize tokens held in the pellet.\n\n![gatherFuel](https://github.com/txpipe/asteria/blob/main/onchain/docs/design/img/gatherFuel.png)\n\nYou need to replace the params with the required values in `src/txs/gather-fuel.ts`:\n\n```ts\nconst fuelAmount = 5; // Replace with the desired fuel to gather\nconst shipName = \"SHIP0\"; // Replace with your ship name\nconst pilotName = \"PILOT0\"; // Replace with your pilot name\nconst pelletRef = \"acbb34e95c67bc4432557088138dbcc00d957756ebac6480e2499d1088b0b7be#13\"; // Pellet UTxO reference\nconst tipSlot = 0; // Replace with the latest block slot\n```\n\nRules to take into account:\n\n- the ship number has to be the one controlled by the pilot token in your wallet.\n- the ship has to be in the same position than the pellet\n- the ship can't have more than 5 fuel units\n\n\nRun this in order to create and submit the transaction:\n\n```bash\nnpm run gather-fuel\n```\n\n### Gather Token Tx\n\nWith this transaction you can gather fuel from the fuel pellets for your ship and retrieve tokens from the pellet.\n\nUpdates the amount of fuel tokens in both `ShipState` and `PelletState` UTxOs, adding the `amount` (specified in the redeemer) from the first and subtracting it from the latter. Also allows the ship owner to get any amount of the prize tokens held in the pellet.\n\n![gatherFuel](https://github.com/txpipe/asteria/blob/main/onchain/docs/design/img/gatherFuel.png)\n\nYou need to replace the params with the required values in `src/txs/gather-token.ts`:\n\n```ts\nconst fuelAmount = 5; // Replace with the desired fuel to gather\nconst shipName = \"SHIP0\"; // Replace with your ship name\nconst pilotName = \"PILOT0\"; // Replace with your pilot name\nconst pelletRef = \"acbb34e95c67bc4432557088138dbcc00d957756ebac6480e2499d1088b0b7be#13\"; // Pellet UTxO reference\n\nconst tokenAmount = 1; // Token amount to gather\nconst tokenName = \"AS09361\"; // Token name\nconst tokenPolicyHash = Uint8Array.from(Buffer.from(\"b4df23876be7207fe26e0cddfb08d6a73ff83754075efafb53446234\", \"hex\")); // Token policy hash\n\nconst tipSlot = 0; // Replace with the latest block slot\n```\n\nRules to take into account:\n\n- the ship number has to be the one controlled by the pilot token in your wallet.\n- the ship has to be in the same position than the pellet\n- the ship can't have more than 5 fuel units\n\n\nRun this in order to create and submit the transaction:\n\n```bash\nnpm run gather-token\n```\n\n### Mine Asteria Tx\n\nWith this transaction you can retrieve the asteria prize.\n\nSubtracts from the `AsteriaUTxO` at most `MAX_ASTERIA_MINING`% of the ada value, and pays that amount to the owner of the ship that reached Asteria, together with the min ada locked in the `ShipState` UTxO. The `ShipToken` and the remaining fuel tokens are burnt.\n\n![mineAsteria](https://github.com/txpipe/asteria/blob/main/onchain/docs/design/img/mineAsteria.png)\n\nYou need to replace the params with the required values in `src/txs/mine-asteria.ts`:\n\n```ts\nconst shipName = \"SHIP0\"; // Replace with your ship name\nconst pilotName = \"PILOT0\"; // Replace with your pilot name\nconst shipFuel = 5; // Replace with the ship fuel\nconst mineAmount = 1_000_000; // Replace with the mine amount -- it should be 50% of asteria ada\nconst tipSlot = 0; // Replace with the latest block slot\n```\n\nRules to take into account:\n\n- the ship number has to be the one controlled by the pilot token in your wallet.\n- the ship has to be in the position (0,0)\n\n\nRun this in order to create and submit the transaction:\n\n```bash\nnpm run mine-asteria\n```\n\n### Quit Game Tx\n\nWith this transaction you can remove your ship from the game.\n\nPays the min ada locked in the `ShipState` UTxO back to the ship owner. Also burns the `ShipToken` and the remaining fuel tokens.\n\n![quit](https://github.com/txpipe/asteria/blob/main/onchain/docs/design/img/quit.png)\n\nYou need to replace the params with the required values in `src/txs/quit-game.ts`:\n\n```ts\nconst shipName = \"SHIP0\"; // Replace with your ship name\nconst pilotName = \"PILOT0\"; // Replace with your pilot name\nconst shipFuel = 5; // Replace with the ship fuel\nconst tipSlot = 0; // Replace with the latest block slot\n```\n\nRules to take into account:\n\n- the ship number has to be the one controlled by the pilot token in your wallet.\n\n\nRun this in order to create and submit the transaction:\n\n```bash\nnpm run quit-game\n```\n\n### List map items\n\nIn order to get the information about the items on the map you can query the Asteria GraphQL API.\n\n#### GraphQL API URL\n\n[`https://8000-ethereal-audience-bb83g6.us1.demeter.run/graphql`](https://8000-ethereal-audience-bb83g6.us1.demeter.run/graphql)\n\n#### GraphQL Query\n\n```graphql\nquery {\n  objectsInRadius(\n    center: { x: 0, y: 0 },\n    radius: 1000,\n    spacetimePolicyId: \"0291ae7aebaf064b785542093c2b13169effb34462301e68d4b44f43\",\n    spacetimeAddress: \"addr1wypfrtn6awhsvjmc24pqj0ptzvtfalang33rq8ng6j6y7scnlkytx\",\n    pelletPolicyId: \"3babcffc6102ec25ced40e1a24fba20371925c46f0299b2b9456360e4655454c\",\n    pelletAddress: \"addr1wya6hnluvypwcfww6s8p5f8m5gphryjugmcznxetj3trvrsc307jj\",\n    asteriaAddress: \"addr1w824uvev63kj40lzfhaq2kxzmmwsz9xsqsjr2t4cq74vzdcdw8c77\",\n    tokens: [\n      { name: \"iagon\", displayName: \"IAGON\", assetName: \"$IAG\", policyId: \"5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114494147\", decimals: 6 },\n      { name: \"sundae\", displayName: \"SundaeSwap\", assetName: \"$SUNDAE\", policyId: \"9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d7753554e444145\", decimals: 6 },\n      { name: \"hosky\", displayName: \"Hosky\", assetName: \"$HOSKY\", policyId: \"a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59\", decimals: 6 },\n      { name: \"metera\", displayName: \"Metera\", assetName: \"$METERA\", policyId: \"8ebb4f0eb39543cdab83eb35f5f194798817eaaa3061872b4101efdb0014df104d4554455241\", decimals: 6 },\n      { name: \"indigo\", displayName: \"Indigo DAO Token\", assetName: \"$INDY\", policyId: \"533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459\", decimals: 6 },\n      { name: \"minswap\", displayName: \"Minswap\", assetName: \"$MIN\", policyId: \"29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e\", decimals: 6 },\n      { name: \"stuff\", displayName: \"Stuff\", assetName: \"$STUFF\", policyId: \"51a5e236c4de3af2b8020442e2a26f454fda3b04cb621c1294a0ef34424f4f4b\", decimals: 6 },\n      { name: \"fluid\", displayName: \"FluidTokens\", assetName: \"$FLDT\", policyId: \"577f0b1342f8f8f4aed3388b80a8535812950c7a892495c0ecdf0f1e0014df10464c4454\", decimals: 6 },\n      { name: \"vyfi\", displayName: \"VyFinance\", assetName: \"$VYFI\", policyId: \"804f5544c1962a40546827cab750a88404dc7108c0f588b72964754f56594649\", decimals: 6 },\n      { name: \"white-trash-warlock\", displayName: \"White Trash Warlock #388\", assetName: \"NFT\", policyId: \"c5ec84e79e58cd5d7203d38738848991ddce76efad59ef701b6f4cf4576869746554726173685761726c6f636b333838\" },\n      { name: \"silver\", displayName: \"SILVER #1119\", assetName: \"NFT\", policyId: \"a0bf068fda05eda2d7cd00e51cdc599059449294101e7211a12195f953494c56455231313139\" },\n      { name: \"collecting-the-simpsons\", displayName: \"Collecting the Simpsons #074\", assetName: \"NFT\", policyId: \"11fb60cbc42fc2012327d82309fe0c5cb39e5b2e83a83a9272d2faad436f6c6c656374696e6753696d70736f6e73303734\" },\n      { name: \"about-stuff\", displayName: \"About Stuff E0 | #9361\", assetName: \"NFT\", policyId: \"b4df23876be7207fe26e0cddfb08d6a73ff83754075efafb5344623441533039333631\" },\n      { name: \"gutenberg-bible\", displayName: \"Gutenberg Bible #2603\", assetName: \"NFT\", policyId: \"477cec772adb1466b301fb8161f505aa66ed1ee8d69d3e7984256a43477574656e62657267204269626c65202332363033\" }\n    ],\n  ) {\n    __typename\n    position { x y }\n    ... on Ship { id fuel shipTokenName { name } pilotTokenName { name } }\n    ... on Pellet { id fuel }\n    ... on Token { id displayName assetName amount }\n    ... on Asteria { id totalRewards }\n  }\n}\n```\n\n#### GraphQL Query cURL\n\n```bash\ncurl --location 'https://8000-ethereal-audience-bb83g6.us1.demeter.run/graphql' \\\n--header 'Content-Type: application/json' \\\n--data '{\"query\":\"query {\\n\\tobjectsInRadius(center: { x: 0, y: 0 }, radius: 1000, spacetimePolicyId: \\\"0291ae7aebaf064b785542093c2b13169effb34462301e68d4b44f43\\\", spacetimeAddress: \\\"addr1wypfrtn6awhsvjmc24pqj0ptzvtfalang33rq8ng6j6y7scnlkytx\\\", pelletPolicyId: \\\"3babcffc6102ec25ced40e1a24fba20371925c46f0299b2b9456360e4655454c\\\", pelletAddress: \\\"addr1wya6hnluvypwcfww6s8p5f8m5gphryjugmcznxetj3trvrsc307jj\\\", asteriaAddress: \\\"addr1w824uvev63kj40lzfhaq2kxzmmwsz9xsqsjr2t4cq74vzdcdw8c77\\\", tokens: [{name: \\\"iagon\\\", displayName: \\\"IAGON\\\", assetName: \\\"$IAG\\\", policyId: \\\"5d16cc1a177b5d9ba9cfa9793b07e60f1fb70fea1f8aef064415d114494147\\\", decimals: 6},{name: \\\"sundae\\\", displayName: \\\"SundaeSwap\\\", assetName: \\\"$SUNDAE\\\", policyId: \\\"9a9693a9a37912a5097918f97918d15240c92ab729a0b7c4aa144d7753554e444145\\\", decimals: 6},{name: \\\"hosky\\\", displayName: \\\"Hosky\\\", assetName: \\\"$HOSKY\\\", policyId: \\\"a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59\\\", decimals: 6},{name: \\\"metera\\\", displayName: \\\"Metera\\\", assetName: \\\"$METERA\\\", policyId: \\\"8ebb4f0eb39543cdab83eb35f5f194798817eaaa3061872b4101efdb0014df104d4554455241\\\", decimals: 6},{name: \\\"indigo\\\", displayName: \\\"Indigo DAO Token\\\", assetName: \\\"$INDY\\\", policyId: \\\"533bb94a8850ee3ccbe483106489399112b74c905342cb1792a797a0494e4459\\\", decimals: 6},{name: \\\"minswap\\\", displayName: \\\"Minswap\\\", assetName: \\\"$MIN\\\", policyId: \\\"29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c64d494e\\\", decimals: 6},{name: \\\"stuff\\\", displayName: \\\"Stuff\\\", assetName: \\\"$STUFF\\\", policyId: \\\"51a5e236c4de3af2b8020442e2a26f454fda3b04cb621c1294a0ef34424f4f4b\\\", decimals: 6},{name: \\\"fluid\\\", displayName: \\\"FluidTokens\\\", assetName: \\\"$FLDT\\\", policyId: \\\"577f0b1342f8f8f4aed3388b80a8535812950c7a892495c0ecdf0f1e0014df10464c4454\\\", decimals: 6},{name: \\\"vyfi\\\", displayName: \\\"VyFinance\\\", assetName: \\\"$VYFI\\\", policyId: \\\"804f5544c1962a40546827cab750a88404dc7108c0f588b72964754f56594649\\\", decimals: 6},{name: \\\"white-trash-warlock\\\", displayName: \\\"White Trash Warlock #388\\\", assetName: \\\"NFT\\\", policyId: \\\"c5ec84e79e58cd5d7203d38738848991ddce76efad59ef701b6f4cf4576869746554726173685761726c6f636b333838\\\"},{name: \\\"silver\\\", displayName: \\\"SILVER #1119\\\", assetName: \\\"NFT\\\", policyId: \\\"a0bf068fda05eda2d7cd00e51cdc599059449294101e7211a12195f953494c56455231313139\\\"},{name: \\\"collecting-the-simpsons\\\", displayName: \\\"Collecting the Simpsons #074\\\", assetName: \\\"NFT\\\", policyId: \\\"11fb60cbc42fc2012327d82309fe0c5cb39e5b2e83a83a9272d2faad436f6c6c656374696e6753696d70736f6e73303734\\\"},{name: \\\"about-stuff\\\", displayName: \\\"About Stuff E0 | #9361\\\", assetName: \\\"NFT\\\", policyId: \\\"b4df23876be7207fe26e0cddfb08d6a73ff83754075efafb5344623441533039333631\\\"},{name: \\\"gutenberg-bible\\\", displayName: \\\"Gutenberg Bible #2603\\\", assetName: \\\"NFT\\\", policyId: \\\"477cec772adb1466b301fb8161f505aa66ed1ee8d69d3e7984256a43477574656e62657267204269626c65202332363033\\\"}])\\n  { __typename position { x y } ... on Ship { id fuel shipTokenName { name } pilotTokenName { name } } ... on Pellet { id fuel } ... on Token { id displayName assetName amount } ... on Asteria { id totalRewards } }\\n}\",\"variables\":{}}'\n```\n\n## Mainnet Challenge\n\nThe mainnet challenge is ready for play! There's 10k ADA and tokens in rewards 🎉\n\n### Parameters\n\n```json\n{\n  \"ship_mint_lovelace_fee\": 1000000,\n  \"max_asteria_mining\": 50,\n  \"max_speed\": {\n    \"distance\": 1,\n    \"time\": 12096000\n  },\n  \"max_ship_fuel\": 5,\n  \"fuel_per_step\": 1,\n  \"initial_fuel\": 5,\n  \"min_asteria_distance\": 50\n}\n```\n\n### Validators\n\n| Validator | Address                                                      | Policy ID                                                  |\n| --------- | ------------------------------------------------------------ | ---------------------------------------------------------- |\n| Asteria   | `addr1w824uvev63kj40lzfhaq2kxzmmwsz9xsqsjr2t4cq74vzdcdw8c77` | `d55e332cd46d2abfe24dfa0558c2dedd0114d00424352eb807aac137` |\n| Pellet    | `addr1wya6hnluvypwcfww6s8p5f8m5gphryjugmcznxetj3trvrsc307jj` | `3babcffc6102ec25ced40e1a24fba20371925c46f0299b2b9456360e` |\n| Spacetime | `addr1wypfrtn6awhsvjmc24pqj0ptzvtfalang33rq8ng6j6y7scnlkytx` | `0291ae7aebaf064b785542093c2b13169effb34462301e68d4b44f43` |\n| Admin     |                                                              | `db0d968cda2cc636b28c0f377e66691a065b8004e57be5129aeef822` |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxpipe%2Fasteria-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftxpipe%2Fasteria-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxpipe%2Fasteria-starter-kit/lists"}