description |
---|
js-1sat-ord |
A Javascript library for creating 1Sat Ordinal inscriptions and transactions. Uses bsv-wasm
under the hood.
yarn add js-1sat-ord
import { createOrdinal, sendOrdinal, sendUtxos } from 'js-1sat-ord'
Prepare some utxos to use
const ordinal: Utxo = {
satoshis: 1,
txid: "61fd6e240610a9e9e071c34fc87569ef871760ea1492fe1225d668de4d76407e",
script:
"OP_DUP OP_HASH160 b87db78cba867b9f5def9f48d00ec732493ee543 OP_EQUALVERIFY OP_CHECKSIG",
vout: 0,
};
const utxo: Utxo = {
satoshis: 269114,
txid: "61fd6e240610a9e9e071c34fc87569ef871760ea1492fe1225d668de4d76407e",
script:
"OP_DUP OP_HASH160 df936f6867bf13de0feef81b3fd14804c35e8cc6 OP_EQUALVERIFY OP_CHECKSIG",
vout: 1,
};
Format raw bytes in b64
const frostShard = "b64 string...";
Be sure to use different keys for ordinals and normal payments. If wallets don't know your outputs contain ordinals, they will be treated like normal utxos and potentially merged with other Satoshis.
const paymentPk = PrivateKey.from_wif(paymentWif);
const ordinalDestinationAddress = "1N8GgJVvwkiQjjN9Fws9t5ax1PLeHrn2bh";
The createOrdinal
function takes a utxo and inscription data.
// inscription
const inscription = { dataB64: fireShard, contentType: "model/gltf-binary"}
// returns Promise<Transaction>
const tx = createOrdinal(utxo, ordinalDestinationAddress, paymentPk, changeAddress, satPerByteFee, inscription);
Sends the ordinal to the destination address.
const tx = sendOrdinal(
utxo,
ordinal,
paymentPk,
changeAddress,
satPerByteFee,
ordPk,
ordDestinationAddress
);
Sends all utxos for the given address to the destination address
const tx = sendOrdinal(
utxos,
paymentPk,
address,
feeSats
);
Since this package depends on bsv-wasm
it will throw errors when used in a frontend project. One workaround for this is to tell your bundler to use bsv-wasm-web
instead of bsv-wasm
. There's a webpack example:
Install module replacer
npm i replace-module-webpack-plugin
Modify the plugins field of your webpack config:
config.plugins = [
...config.plugins,
new WebpackPluginReplaceNpm({
rules: [
{
originModule: "bsv-wasm",
replaceModule: "bsv-wasm-web",
},
],
}),
];
if you only want to make the replacement for this package
{
originModule: "bsv-wasm",
replaceModule: "bsv-wasm-web",
context: /node_modules\/js-1sat-ord/,
},