Git Product home page Git Product logo

runestone's Introduction

@ordjs/runestone

Ordinals runestone javascript implementation.

This implementation is based on ord 0.18.3 (ordinals runestone 0.0.8)

NPM version MIT License Stargazers

Contributors Issues Follow Twitter

Report Bug · Pull Request

Installation

$ npm install @ordjs/runestone

It will be pnpm/yarn add @ordjs/runestone if you use pnpm or yarn.

Usage

Runestone

Rune protocol messages, called runestones, are stored in Bitcoin transaction outputs.

Decipher Runestones

import { Runestone, Transaction } from '@ordjs/runestone';

// See https://mempool.space/tx/2bb85f4b004be6da54f766c17c1e855187327112c231ef2ff35ebad0ea67c69e
const tx: Transaction = {
  output: [{
    // // OP_RETURN OP_PUSHNUM_13 ...
    script_pubkey: '6a5d21020704b5e1d8e1c8eeb788a30705a02d039f3e01020680dc9afd2808c7e8430a64',
    value: 0,
  }],
};

const runestone = Runestone.decipher(tx);
// runestone.etching.divisibility => 2
// runestone.etching.premine => 11000000000
// runestone.etching.symbol => ᚠ
// runestone.etching.terms.amount => 100

Encipher Runestones

To deploy a new rune ticker, this will require a commitment in an input script.

import { Runestone, Etching, SpacedRune, Terms } from '@ordjs/runestone';

const etching = new Etching({
  spacedRune: SpacedRune.fromString('Hi•JEASON'),
  premine: 0n,
  terms: new Terms({ amount: 69n, cap: 420n }),
  divisibility: 0,
  symbol: '$',
});

const runestone = new Runestone({ etching });
console.log(runestone.encipher());
// 6a5d16020704b7fcb396fa0101000302052406000a4508a403
// send runestone.encipher() to the blockchain

To mint UNCOMMON•GOODS:

import { Runestone, RuneId } from '@ordjs/runestone';

const runestone = new Runestone({ mint: new RuneId(1n, 0) });
console.log(runestone.encipher());
// 6a5d0414011400
// send runestone.encipher() to the blockchain

Transfer 10 UNCOMMON•GOODS to output 1:

import { Runestone, Edict, RuneId } from '@ordjs/runestone';

const edict = new Edict(new RuneId(1n, 0), 10n, 1);
const runestone = new Runestone({ edicts: [edict] });
console.log(runestone.encipher());
// 6a5d050001000a01
// send runestone.encipher() to the blockchain

Use in Browser

We provide the output format of ESM bundles for easy use in browsers directly:

<script type="module">
  import { Runestone } from 'https://esm.sh/@ordjs/runestone/bundle';

  const rs = Runestone.decipher({...});
  // rs.xxx
</script>

For more usage, please refer to the examples directory.

License

MIT

runestone's People

Contributors

jeasonstudio avatar amazing129 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.