{"id":16354565,"url":"https://github.com/jeasonstudio/runestone","last_synced_at":"2025-03-16T15:32:02.565Z","repository":{"id":236200233,"uuid":"792125639","full_name":"jeasonstudio/runestone","owner":"jeasonstudio","description":"👁‍🗨 Ordinals runestone javascript implementation","archived":false,"fork":false,"pushed_at":"2024-05-21T08:14:35.000Z","size":256,"stargazers_count":19,"open_issues_count":3,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-13T18:18:42.721Z","etag":null,"topics":["bitcoin","ordinals","runes","runestone"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/jeasonstudio.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}},"created_at":"2024-04-26T03:04:24.000Z","updated_at":"2024-12-09T08:39:58.000Z","dependencies_parsed_at":"2024-05-21T09:35:28.600Z","dependency_job_id":"dfe4ee6a-8792-4c2e-89d3-91a798c5feac","html_url":"https://github.com/jeasonstudio/runestone","commit_stats":null,"previous_names":["jeasonstudio/bitcoin-runes","jeasonstudio/runestone"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonstudio%2Frunestone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonstudio%2Frunestone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonstudio%2Frunestone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeasonstudio%2Frunestone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeasonstudio","download_url":"https://codeload.github.com/jeasonstudio/runestone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243822312,"owners_count":20353496,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bitcoin","ordinals","runes","runestone"],"created_at":"2024-10-11T01:35:37.298Z","updated_at":"2025-03-16T15:32:02.217Z","avatar_url":"https://github.com/jeasonstudio.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003ch1\u003e@ordjs/runestone\u003c/h1\u003e\n\n[Ordinals](https://ordinals.com/) runestone javascript implementation.\n\nThis implementation is based on ord `0.18.3` (ordinals runestone `0.0.8`)\n\n[![NPM version][npm-image]][npm-url]\n[![MIT License][license-shield]][license-url]\n[![Stargazers][stars-shield]][stars-url]\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Issues][issues-shield]][issues-url]\n[![Follow Twitter][twitter-image]][twitter-url]\n\n[Report Bug](https://github.com/jeasonstudio/runestone/issues/new) · [Pull Request](https://github.com/jeasonstudio/runestone/compare)\n\n![](https://raw.githubusercontent.com/andreasbm/readme/master/assets/lines/rainbow.png)\n\n[npm-image]: https://img.shields.io/npm/v/@ordjs/runestone?style=for-the-badge\n[npm-url]: http://npmjs.org/package/@ordjs/runestone\n\n[codecov-image]: https://img.shields.io/codecov/c/github/jeasonstudio/runestone/master.svg?style=for-the-badge\n[codecov-url]: https://codecov.io/gh/jeasonstudio/runestone/branch/master\n[license-shield]: https://img.shields.io/github/license/jeasonstudio/runestone.svg?style=for-the-badge\n[license-url]: https://github.com/jeasonstudio/runestone/blob/master/LICENSE\n\n[contributors-shield]: https://img.shields.io/github/contributors/jeasonstudio/runestone.svg?style=for-the-badge\n[contributors-url]: https://github.com/jeasonstudio/runestone/graphs/contributors\n[stars-shield]: https://img.shields.io/github/stars/jeasonstudio/runestone.svg?style=for-the-badge\n[stars-url]: https://github.com/jeasonstudio/runestone/stargazers\n[issues-shield]: https://img.shields.io/github/issues/jeasonstudio/runestone.svg?style=for-the-badge\n[issues-url]: https://github.com/jeasonstudio/runestone/issues\n[twitter-image]: https://img.shields.io/twitter/follow/jeasonstudio?style=for-the-badge\u0026logo=x\n[twitter-url]: https://twitter.com/jeasonstudio\n\n\u003c/div\u003e\n\n## Installation\n\n```bash\n$ npm install @ordjs/runestone\n```\n\n\u003e It will be `pnpm/yarn add @ordjs/runestone` if you use pnpm or yarn.\n\n## Usage\n\n\u003c!-- [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/jeasonstudio/runestone/tree/main/examples) --\u003e\n\n### Runestone\n\nRune protocol messages, called runestones, are stored in Bitcoin transaction outputs.\n\n#### Decipher Runestones\n\n```typescript\nimport { Runestone, Transaction } from '@ordjs/runestone';\n\n// See https://mempool.space/tx/2bb85f4b004be6da54f766c17c1e855187327112c231ef2ff35ebad0ea67c69e\nconst tx: Transaction = {\n  output: [{\n    // // OP_RETURN OP_PUSHNUM_13 ...\n    script_pubkey: '6a5d21020704b5e1d8e1c8eeb788a30705a02d039f3e01020680dc9afd2808c7e8430a64',\n    value: 0,\n  }],\n};\n\nconst runestone = Runestone.decipher(tx);\n// runestone.etching.divisibility =\u003e 2\n// runestone.etching.premine =\u003e 11000000000\n// runestone.etching.symbol =\u003e ᚠ\n// runestone.etching.terms.amount =\u003e 100\n```\n\n#### Encipher Runestones\n\nTo deploy a new rune ticker, this will require a commitment in an input script.\n\n```typescript\nimport { Runestone, Etching, SpacedRune, Terms } from '@ordjs/runestone';\n\nconst etching = new Etching({\n  spacedRune: SpacedRune.fromString('Hi•JEASON'),\n  premine: 0n,\n  terms: new Terms({ amount: 69n, cap: 420n }),\n  divisibility: 0,\n  symbol: '$',\n});\n\nconst runestone = new Runestone({ etching });\nconsole.log(runestone.encipher());\n// 6a5d16020704b7fcb396fa0101000302052406000a4508a403\n// send runestone.encipher() to the blockchain\n```\n\nTo mint `UNCOMMON•GOODS`:\n\n```typescript\nimport { Runestone, RuneId } from '@ordjs/runestone';\n\nconst runestone = new Runestone({ mint: new RuneId(1n, 0) });\nconsole.log(runestone.encipher());\n// 6a5d0414011400\n// send runestone.encipher() to the blockchain\n```\n\nTransfer 10 `UNCOMMON•GOODS` to output 1:\n\n```typescript\nimport { Runestone, Edict, RuneId } from '@ordjs/runestone';\n\nconst edict = new Edict(new RuneId(1n, 0), 10n, 1);\nconst runestone = new Runestone({ edicts: [edict] });\nconsole.log(runestone.encipher());\n// 6a5d050001000a01\n// send runestone.encipher() to the blockchain\n```\n\n## Use in Browser\n\nWe provide the output format of ESM bundles for easy use in browsers directly:\n\n```html\n\u003cscript type=\"module\"\u003e\n  import { Runestone } from 'https://esm.sh/@ordjs/runestone/bundle';\n\n  const rs = Runestone.decipher({...});\n  // rs.xxx\n\u003c/script\u003e\n```\n\nFor more usage, please refer to the [examples](/examples/) directory.\n\n## License\n\n[MIT](./LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeasonstudio%2Frunestone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeasonstudio%2Frunestone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeasonstudio%2Frunestone/lists"}