Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/crypmancer/rune-ordinal-custompsbt-toolkit
Rune Ordinal CustomPSBT Toolkit
https://github.com/crypmancer/rune-ordinal-custompsbt-toolkit
bitcoin ordinal psbt runes toolkit
Last synced: 6 days ago
JSON representation
Rune Ordinal CustomPSBT Toolkit
- Host: GitHub
- URL: https://github.com/crypmancer/rune-ordinal-custompsbt-toolkit
- Owner: crypmancer
- Created: 2024-08-01T10:02:52.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-09-23T12:06:51.000Z (about 2 months ago)
- Last Synced: 2024-10-21T16:29:05.458Z (29 days ago)
- Topics: bitcoin, ordinal, psbt, runes, toolkit
- Language: TypeScript
- Homepage:
- Size: 67.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Runestone toolbox Typescript
---
Runestone Etch, Mint, Transfer, Recursive Rune, Airdrop, Encipher, Decipher## Prerequisites
---
Before running the script, ensure you have the following dependencies installed:- `bitcoinjs-lib`
- `ecpair`
- `@bitcoinerlab/secp256k1`
- `axios`
- `runelib`
- `cbor`You can install them using npm:
```sh
npm install bitcoinjs-lib ecpair @bitcoinerlab/secp256k1 axios runelib
```## Configuration
---
Ensure you have a `.env` file in your project root with the following variables:```plaintext
PRIVATE_KEY=
MNEMONIC= (optional, if using SeedWallet)
```## Recursive Rune Etching Script
This script allows you to create a recursive ordinal inscription on the Bitcoin testnet using Taproot addresses. It involves creating an HTML content, enciphering it as a Taproot script, and broadcasting the transaction to the testnet network.
### Usage
1. **Initialize ECC Library**:
The script initializes the ECC library using `initEccLib` from `bitcoinjs-lib`.2. **Wallet Setup**:
The script supports two types of wallets: `SeedWallet` and `WIFWallet`. Currently, the `WIFWallet` is used.3. **Create Etching**:
The `etching` function is the main function that creates the recursive ordinal. It involves the following steps:
- Define the HTML content to be inscribed.
- Create an inscription object using `EtchInscription`.
- Define a Taproot script with the inscription and the wallet's public key.
- Generate a Taproot address and wait for UTXOs to be funded to this address.
- Create a Partially Signed Bitcoin Transaction (PSBT).
- Add inputs and outputs to the PSBT.
- Sign and broadcast the transaction.4. **Broadcast Transaction**:
The `signAndSend` function handles the signing and broadcasting of the transaction. It supports both node environment and browser environment.## Functions
- **etching()**: Main function to create the recursive ordinal inscription.
- **waitUntilUTXO(address: string)**: Polls the address for UTXOs until found.
- **getTx(id: string)**: Fetches transaction hex by ID.
- **signAndSend(keyPair: BTCSigner, psbt: Psbt, address: string)**: Signs and broadcasts the PSBT.
- **broadcast(txHex: string)**: Broadcasts the raw transaction to the network.
- **tapTweakHash(pubKey: Buffer, h: Buffer | undefined)**: Computes the Taproot tweak hash.
- **toXOnly(pubkey: Buffer)**: Converts a public key to X-only format.
- **tweakSigner(signer: BTCSigner, opts: any)**: Tweaks the signer for Taproot key tweaking.# Taproot Rune Minting Script
This script enables the minting of Runes using Taproot addresses on the Bitcoin testnet. It leverages `bitcoinjs-lib`, `ecpair`, and `runelib` to create, sign, and broadcast a Bitcoin transaction containing Runes.
## Usage
1. **Initialize ECC Library**:
The script initializes the ECC library using `initEccLib` from `bitcoinjs-lib`.2. **Wallet Setup**:
The script supports two types of wallets: `SeedWallet` and `WIFWallet`. Currently, the `WIFWallet` is used.3. **Minting with Taproot**:
The `mintWithTaproot` function is the main function that mints Runes. It involves the following steps:
- Define Runes to be minted.
- Create a Runestone with the specified Runes.
- Tweak the signer for Taproot key tweaking.
- Generate a Taproot address.
- Wait for UTXOs to be funded to this address.
- Create a Partially Signed Bitcoin Transaction (PSBT).
- Add inputs and outputs to the PSBT.
- Sign and broadcast the transaction.4. **Broadcast Transaction**:
The `signAndSend` function handles the signing and broadcasting of the transaction. It supports both node environment and browser environment.## Functions
- **mintWithTaproot()**: Main function to mint Runes using Taproot.
- **waitUntilUTXO(address: string)**: Polls the address for UTXOs until found.
- **getTx(id: string)**: Fetches transaction hex by ID.
- **signAndSend(keyPair: BTCSigner, psbt: Psbt, address: string)**: Signs and broadcasts the PSBT.
- **broadcast(txHex: string)**: Broadcasts the raw transaction to the network.
- **tapTweakHash(pubKey: Buffer, h: Buffer | undefined)**: Computes the Taproot tweak hash.
- **toXOnly(pubkey: Buffer)**: Converts a public key to X-only format.
- **tweakSigner(signer: BTCSigner, opts: any)**: Tweaks the signer for Taproot key tweaking.
-
# Recursive Rune Minting Script with Taproot InscriptionThis script allows you to mint recursive Runes on the Bitcoin testnet using Taproot addresses. The script uses `bitcoinjs-lib`, `ecpair`, and `runelib` libraries to create, sign, and broadcast Bitcoin transactions containing Runes.
## Prerequisites
Make sure you have the following dependencies installed:
- `bitcoinjs-lib`
- `ecpair`
- `@bitcoinerlab/secp256k1`
- `axios`
- `cbor`
- `runelib`You can install them using npm:
```sh
npm install bitcoinjs-lib ecpair @bitcoinerlab/secp256k1 axios cbor runelib
```## Usage
### Steps Overview
1. **Initialize ECC Library**:
The script initializes the ECC library using `initEccLib` from `bitcoinjs-lib`.2. **Wallet Setup**:
The script supports two types of wallets: `SeedWallet` and `WIFWallet`. Currently, the `WIFWallet` is used.3. **Create Taproot Inscription**:
The `createChildInscriptionTapScript` function creates the Taproot script for the inscription, using the provided content and metadata.4. **Mint Runes and Create PSBT**:
The `childInscribe` function mints Runes and creates a Partially Signed Bitcoin Transaction (PSBT). It includes:
- Funding the Taproot address.
- Adding inputs and outputs to the PSBT.
- Signing and broadcasting the transaction.5. **Broadcast Transaction**:
The `signAndSend` function handles the signing and broadcasting of the transaction.## Functions
- **contentBuffer(content: string)**: Converts content string to a buffer.
- **createChildInscriptionTapScript()**: Creates the Taproot script for child inscriptions.
- **childInscribe()**: Main function to mint Runes using Taproot.
- **signAndSend(keyPair: BTCSigner, psbt: Psbt)**: Signs and broadcasts the PSBT.
- **waitUntilUTXO(address: string)**: Polls the address for UTXOs until found.
- **getTx(id: string)**: Fetches transaction hex by ID.
- **broadcast(txHex: string)**: Broadcasts the raw transaction to the network.
- **tapTweakHash(pubKey: Buffer, h: Buffer | undefined)**: Computes the Taproot tweak hash.
- **toXOnly(pubkey: Buffer)**: Converts a public key to X-only format.
- **tweakSigner(signer: BTCSigner, opts: any)**: Tweaks the signer for Taproot key tweaking.## Important Variables
- **network**: Configured to use Bitcoin testnet.
- **txhash**: Transaction hash of the parent inscription.
- **memeType**: MIME type for the content.
- **metaProtocol**: Meta protocol buffer.
- **receiveAddress**: Address to receive the Runes.
- **metadata**: Metadata for the inscription.
- **fee**: Transaction fee.
- **parentInscriptionTXID**: Transaction ID of the parent inscription.
- **contentBufferData**: Buffer containing the content for the inscription.
- **revealtxIDBuffer**: Buffer of the parent inscription transaction ID.
- **pointerBuffer**: Array of buffers for pointers in the Taproot script.
- **metadataBuffer**: CBOR encoded metadata buffer.
- **contentBufferArray**: Array of content buffers split into chunks.
## Example OutputThe script will output logs at various stages:
- The Taproot address where funds should be sent.
- The UTXO being used.
- The raw transaction hex to be broadcasted.
- The transaction ID after broadcasting.## Notes
- The script is configured to work with the Bitcoin testnet.
- Ensure that you have testnet coins available in the provided private key.
- Adjust the fee and other parameters as needed.---