Skip to content

Latest commit

 

History

History
93 lines (79 loc) · 4.33 KB

readme.md

File metadata and controls

93 lines (79 loc) · 4.33 KB

Insacn (Inscription Scan)

A Rust tool that can decode/index inscription events data (e.g. ordinals, arc20, brc20, runes, src20...) from blocks and transactions on Bitcoin.

Supported Protocols

  • Ordinals
    • ord: ✔️mint, ✖️transfer
    • ord-brc20: ✔️deploy, ✔️mint, ✔️inscripbeTransfer, ✖️transfer
    • ord-brc100: ✔️deploy, ✔️mint, ✔️inscripbeTransfer, ✖️transfer
    • ord-brc420: ✔️deploy, ✔️mint, ✖️transfer
    • ord-bitmap: ✔️mint, ✖️transfer
    • ord-sns: ✔️deploy, ✔️mint, ✖️transfer
    • ord-tap: ✔️deploy, ✔️mint, ✔️inscripbeTransfer, ✖️transfer
  • Atomicals
    • atom-arc20: ✔️dft(deploy), ✔️ft(mint), ✔️dmt(mint), ✔️y(split), ✖️transfer
    • atom-nft: ✔️nft->request_container, ✔️nft->request_dmitem, nft, ✖️transfer Note: bytes was encoded in base64
    • atom-realm: ✔️nft->request_realm, ✔️nft->request_subrealm, ✖️transfer
    • atom-others: ✔️mod, ✔️evt, ✔️dat, ✔️sl, ✔️x
  • Runes
    • rune-stone: ✔️etching(deploy), ✔️edicts(transfer), ✔️mint, ✖️transfer
    • rune-alpha: ✔️etching(deploy), ✔️edicts(transfer), ✔️mint, ✖️transfer
  • Stamps
    • stamp-src20: ✔️deploy, ✔️mint, ✔️transfer
    • stamp-src721: ✖️mint, ✖️transfer

Note:

  1. It's only scan(decode) protocols stored in raw transaction data, not include the whole indexing data. So the common transaction depend on indexing data which marked as ✖️ will not be included.
  2. Currently, the protocols only perform basic checks and do not perform strict verification. It should not used in production environments.

Install

Inscan is built on rust, you must install rust on your computer before compiling.

git clone [email protected]:satpoint-io/inscan.git
cd inscan
cargo build --release

Once built, the inscan binary can be found at ./target/release/inscan

Usage

inscan requires a synced bitcoind node with -txindex. inscan communicates with bitcoind via RPC to retrive bitcoin transaction data.

  1. Decode arc20 from block

    inscan -u devnet -w devnet --protocol atom-arc20 --out-file examples/block-838266.jsonl \
        decode --block 838266 #range blocks 838266:838270 or multi blocks 838266,838275,838279
  2. Decode brc20 from transaction id

    inscan -u devnet -w devnet --protocol ord-brc20 --out-file examples/aaabbb3.jsonl \
        decode --txid c631181e8f7740064ec5e832d773086369d30f5297713a0b098d6d95ffe0c78b
        #multi txids 913bebf12d6030a092890d22dbc565df2b2f32b33876568bca19e7e92fbe4f77,c631181e8f7740064ec5e832d773086369d30f5297713a0b098d6d95ffe0c78b
    
  3. Index all blocks start from 838250

    inscan -u devnet -w devnet --protocol all --out-file examples/block-838266.jsonl \
        index --start 838266
  4. Index brc20 and save to postgres

    inscan -u devnet -w devnet --protocol ord-brc20 --out-db postgres://postgres:postgres@localhost:5432/postgres \
        index --start 838266

Output

  • local jsonl file: the output jsonl format is a nested line structures json, more details can be found at: docs/data-structure.md
  • database postgres: save the event data to postgres. you need create table in postgres by sql/db_init.sql before execuate.

The ouput data json format contain the following fields, you can get the detail protocol events data with paylaod field:

{
    "blocktime":1712693506, //the block time
    "height":838501,        //the block height
    "txhash":"ade32e39a0aaa3600c2f4e4061445a447894002894279fd0d15f6c6c8d680f54", //transaction hash
    "txindex":855,          //the transaction index in one block(start from 0)
    "protocol":"ord-brc20", //supported bitcoin asset protocol
    "payload":{             //the detail of the protocol content
        "amt": "1000",
        "op": "mint",
        "p": "brc-20",
        "tick": "ombi"
    }
// ...
}

Reference