0

I attempted to mint SATS tokens on the Bitcoin network using the Ordinals protocol and BRC20 standards by utilizing an intermediary software written in the Go language. I made no adjustments to the software and it likely sent raw data directly. My intention was to execute 500 repetitive minting transactions without being aware of the 25 transaction limit.

However, I encountered the following error:

"Send error, reveal send error, 25 transaction hashes could not be parsed, sendrawtransaction RPC error: {"code":-26,"message":"too-long-mempool-chain, too many descendants for tx 369a184f3e941a501b99a2865f6c1db09f39af379ef8c63fb52689e37e3376a7 [limit: 25]"}: maximum hash string length is 64 bytes."

As a result of this error, only 25 out of my 500 transactions were successful in executing the Bitcoin command. The remaining 475 transactions did not consume the sent ‎0,00002914 btc, and consequently, the tokens I minted did not reach me.

Is there anything I can do for Bitcoin script that did not fulfill their task? https://mempool.space/tx/369a184f3e941a501b99a2865f6c1db09f39af379ef8c63fb52689e37e3376a7

216kedi
  • 1
  • 1

1 Answers1

0

Is there anything I can do for Bitcoin script that did not fulfill their task?

The blockchain has your original transaction 369a...76a7 with 500 outputs plus change.

flow diagram

As shown above, the blockchain also has 25 of your intended 500 subsequent transactions. Those 25 have inscriptions in their inputs (consuming 25 of the 500 outputs of your original transaction 369a...76a7):

blockchain> txfile brc500_1.hex
  Version:................01000000 (1)
  Type:...................0001 (Segwit)
  Inputs:.................01 (1)
  Input:1
    Previous Transaction:.369A184F3E941A501B99A2865F6C1DB09F39AF379EF8C63FB52689E37E3376A7
    Previous Output Index:0000 (0)
    Script Length:........00 (0)
    Unlocking Script hex:.
                     asm:.
    Sequence:.............F5FFFFFF
  Outputs:................01 (1)
  Output 1
    Value:................4A01000000000000 (330)
    Script Length:........22 (34)
    Locking Script hex:...51203BB3F303DF3529D9E693BE1C9CBDF6D5B582EE9F592381CD9777E7DF92C2
                          5406
                   asm:...1 (32)
  Witness 1
    Item Count:...........03 (3)
    Item 1
      Length:.............40 (64)
      Data:.........hex:..94D2FE87DF695FB9C40C3CC06AFCB8B7732785E0F322BC6E223363FE714C2ABD
                          D1BCB5C4525EFC8E00B4BDB2F6C3C78BB7EC37E65D8FD0517BCF7BBD03F3DD86
    Item 2
      Length:.............80 (128)
      Data:.........hex:..208093C76124876944CC7AE3F4C1AC2E5318694890ECD16C2E01FCC99B9D31EA
                          77AC0063036F7264010118746578742F706C61696E3B636861727365743D7574
                          662D38003A7B2270223A226272632D3230222C226F70223A226D696E74222C22
                          7469636B223A2273617473222C22616D74223A22313030303030303030227D68
                    asm:..(32) CHECKSIG 0 IF (ord) (1) (text/plain;charset=utf-8) 0 ({"p":
                          "brc-20","op":"mint","tick":"sats","amt":"100000000"}) ENDIF
    Item 3
      Length:.............21 (33)
      Data:.........hex:..C08093C76124876944CC7AE3F4C1AC2E5318694890ECD16C2E01FCC99B9D31EA
                          77
  LockTime:...............00000000 (0)
  (Calculated hash is B359267DDB752FFB3ADE7EE2BDE30053B141EFDC3396242740B1F9B5BDB5EB85)

blockchain> txfile brc500_25.hex Version:................01000000 (1) Type:...................0001 (Segwit) Inputs:.................01 (1) Input:1 Previous Transaction:.369A184F3E941A501B99A2865F6C1DB09F39AF379EF8C63FB52689E37E3376A7 Previous Output Index:0018 (24) Script Length:........00 (0) Unlocking Script hex:. asm:. Sequence:.............F5FFFFFF Outputs:................01 (1) Output 1 Value:................4A01000000000000 (330) Script Length:........22 (34) Locking Script hex:...51203BB3F303DF3529D9E693BE1C9CBDF6D5B582EE9F592381CD9777E7DF92C2 5406 asm:...1 (32) Witness 1 Item Count:...........03 (3) Item 1 Length:.............40 (64) Data:.........hex:..13738044ACBBA78A353BC3DB2CF3C2C692C00171969E2DF538568AE3B5E56792 130CC40D7FFC0D249ECD00DE8A6F59FCC7DBDB1F8F91AC9A19C2A01AF89E268B asm:..(19) DIV NUMNOTEQUAL (45) Item 2 Length:.............80 (128) Data:.........hex:..205337C61F505AA78712D3145B8AF9D57E6C14E28C397748E4A70E14D6E65643 14AC0063036F7264010118746578742F706C61696E3B636861727365743D7574 662D38003A7B2270223A226272632D3230222C226F70223A226D696E74222C22 7469636B223A2273617473222C22616D74223A22313030303030303030227D68 asm:..(32) CHECKSIG 0 IF (ord) (1) (text/plain;charset=utf-8) 0 ({"p": "brc-20","op":"mint","tick":"sats","amt":"100000000"}) ENDIF Item 3 Length:.............21 (33) Data:.........hex:..C15337C61F505AA78712D3145B8AF9D57E6C14E28C397748E4A70E14D6E65643 14 LockTime:...............00000000 (0) (Calculated hash is B23783ED32C421E225C0DA1D43D301DE704066D4456820753D454C8D132E6155)

So I guess you should submit the remaining 475 transactions, possibly in groups of 25 if your tools have that restriction.

In this situation I would replicate the situation in testnet, not in mainnet, and then test out creating the remaining transactions one at a time on testnet. I would only use mainnet after being completely satisfied with the results in testnet.

As I commented, I am not an expert in Ordinals, Inscriptions or BRC-20. Do this entirely at your own risk.


Addendum.

The outputs of the original transaction are P2TR (taproot) so the transactions that spend those need to include three witness components as shown in What are the scriptPubKey, scriptSig, redeem script and witness for the various output types? . The BRC-20 inscriptions are made in the second witness item.

Some more details can be found in various places such as How to differentiate between BTC transactions and BRC20 transactions on a blockchain? , the Taproot BIPs and the documentation for BRC-20 and ordinals inscription.

If you don't have an easy way of doing this, you may find it easiest to write off the transaction or spend the Bitcoin amounts with a normal wallet.

RedGrittyBrick
  • 26,841
  • 3
  • 25
  • 51
  • I apologize for any misunderstandings, as I only began researching these topics after encountering this issue. If there are any mistakes in my understanding, please correct me. Should I send the transaction in the following format? For example: Input: txid: 369a184f3e941a501b99a2865f6c1db09f39af379ef8c63fb52689e37e3376a7 (Transaction ID with 500 outputs) index: 26 amount: 0.00002914 txid: 369a184f3e941a501b99a2865f6c1db09f39af379ef8c63fb52689e37e3376a7 index: 27 amount: 0.00002914 Outputs: My wallet address and the output amount. Is the output amount significant?@RedGrittyBrick – 216kedi Sep 14 '23 at 16:03
  • @216kedi: I think you are on the right track but I am not an expert in Ordinals, Inscriptions or BRC-20. Do this entirely at your own risk. – RedGrittyBrick Sep 14 '23 at 16:34
  • Your invaluable help is appreciated. After days of research, I'm still a bit confused. Is it necessary to include witness info in the new transaction, or simply the scriptPubKey? If witness info is required, please explain the roles of Item 1 and Item 3 in your example. My script generates new wallets for each minting transaction. Do I need their private keys to resend unexecuted outputs, or can I use my main wallet's key with 500 outputs? Lastly, could you demonstrate how to create the raw code for a single operation? Thanks! @redgrittybrick – 216kedi Sep 17 '23 at 14:18
  • See addendum to answer. You may get better help in a BRC-20 forum. – RedGrittyBrick Sep 17 '23 at 17:00
  • I read so much and was confused that I didn't know what to do. The mint process is about to reach its final limit, I think I've lost this fight. Thanks so much for your help. @redgrittybrick – 216kedi Sep 18 '23 at 16:50