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.
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.
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()
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()
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 })
}