bc-runes-js

0.3.2 • Public • Published

BC RUNES JS

A package that makes use of runelib library to allow minting, etching or transferring bitcoin runes very easily, by abstracting a bit more of what runelib does, creating the whole environment and scripts for transaction signing, submitting, and waiting.

USAGE

Preparing the address

  const {
    generateAddress,
    getRandomWif
  } = require('bc-runes-js')

  async function main() {
    // If getting an address for the first time, a random wif should be used.
    // Otherwise, skip the line below and invoke generateAddress($yourWif)
    const randomWif = getRandomWif()
    const address = generateAddress(randomWif).taprootAddress
    console.log(address)
  }

Will output the following

  {
    taprootAddress: 'tb1paygndrxzphwlgpn8utlcp592wf267jvk50wxnam6zuvszruhk3pqut4e6f',
    WIF: 'cMjdU3yAEif9P6eug1pa3MxYbpgPjd5vTnRP1cfzLPrWg85N5NAg'
  }

Save taprootAddress and WIF in an .env file or anywhere for later use in the project. This only taproot address will hold the runes sent to it, minted or premined, in outputs with a value of 546. It will need bigger utxos to pay the fees for the transactions it may send.

Note: the address is randomly generated and purely for this example, don't try to use it.

Example for etching a rune

const {
  etch,
  init
} = require('bc-runes-js')

const {
  TAPROOT_ADDRESS,
  WIF
} = process.env

async function main() {
  init({
    taprootAddress: TAPROOT_ADDRESS,
    wif: WIF,
    feePerVByte: 300
  })

  const res = await etch({
    amount: 1,
    cap: 100,
    divisibility: 0,
    name: 'YOUR•RUNE•NAME',
    symbol: '❤︎'
  })

  console.log({ res })
}

main()

Example for minting a rune

const {
  mint,
  init
} = require('bc-runes-js')

const {
  TAPROOT_ADDRESS,
  WIF
} = process.env

async function main() {
  init({
    taprootAddress: TAPROOT_ADDRESS,
    wif: WIF,
    feePerVByte: 300
  })

  // only one of these two arguments is mandatory
  const res = await mint({
    name: 'a rune name with or without spacers (•)',
    runeId: 'blockNumber:txIndex'
  })

  console.log({ res })
}

main()

Example for transferring a rune

const {
  transfer,
  init
} = require('bc-runes-js')

const {
  TAPROOT_ADDRESS,
  WIF
} = process.env

async function main() {
  init({
    taprootAddress: TAPROOT_ADDRESS,
    wif: WIF,
    feePerVByte: 300
  })

  // only the rune name or the id is needed in a transfer object
  const res = await transfer([
    { amount: 'how many runes to transfer',
      to: 'taproot address to send the runes to',
      runeId: 'the id of the rune',
      name: 'the full name of the rune, with or without spacers'
    },
    { 
      // other desired transfer objects
    }
  ])

  console.log({ res })
}

Package Sidebar

Install

npm i bc-runes-js

Weekly Downloads

3

Version

0.3.2

License

ISC

Unpacked Size

32 kB

Total Files

24

Last publish

Collaborators

  • iovgomezdn
  • gomezdn