taproot-assets icon indicating copy to clipboard operation
taproot-assets copied to clipboard

[bug]: Unable to generate taproot asset address

Open Liongrass opened this issue 2 months ago • 9 comments

Background

  1. On Signet Node A, I minted an asset, then expanded its supply.

  2. I only added the universe.signet.laisee.org:8443 server to the local federation of Node A after. In the logs I observed that the proofs were pushed to the universe shortly after.

2025-10-09 21:12:30.876 [INF] UNIV: Pushing proof to 1 federation members, proof_key=(universe.BaseLeafKey) {
 OutPoint: (wire.OutPoint) 70172aff37b10b71470499dab03f19262b02e28d461bf60aa4f4c430a61f1b41:0,
 ScriptKey: (*asset.ScriptKey)(0xc000ca9a50)({
  PubKey: (*secp256k1.PublicKey)(0xc0000df220)({
   x: (secp256k1.FieldVal) 307fc15ec5c10f0bfef9a7547c4e974ee383752522deaf83b04685eff4ca536c,
   y: (secp256k1.FieldVal) 386c8dd3d7669fccba8e6b793c57f65dbefae6676dcaccc2b427aa670d2d449e
  }),
  TweakedScriptKey: (*asset.TweakedScriptKey)(<nil>)
 })
}
  1. I then synced to the universe from Node B with command tapcli universe sync --universe_host universe.signet.laisee.org:8443 --group_key 02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981

This returns:

{
    "synced_universes": []
}
  1. I then try to generate a taproot asset address for the asset in question with tapcli addrs new --group_key 02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981

Your environment

(both sender and receiver)

tapd: 0.7.0-alpha.rc1 commit=v0.7.0-rc1-7-gcbf1dff2 lnd: 0.20.0-beta.rc1 commit=v0.20.0-beta.rc1

tapcli getinfo                       # version of `tapd`, `lnd`, and network
uname -mrsv                          # operating system 
bitcoind --version || btcd --version # version of `btcd`, `bitcoind`, or other backend
  • any other relevant environment details

Steps to reproduce

Tell us how to reproduce this issue. Please provide stacktraces and links to code in question.

Expected behavior

I expect to be given an address.

2025-10-09_universe.log 2025-10-09_tapd.log

Actual behavior

The resulting error:

[tapcli] unable to make addr: rpc error: code = Unknown desc = unable to make new addr: unable to make address for unknown asset AssetSpecifier(id=, group_pub_key=02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981): asset lookup failed for asset: issuance-0389c8fb2a8691e31d311329782b320ac941765c0d50f7d40db03102fa26388f

Liongrass avatar Oct 09 '25 21:10 Liongrass

The tapd node attempted to sync with the universe, but it looks like there was no diff. @Liongrass Could you try syncing again and then generate a new address to see if it succeeds?

This might be a timing issue between pushing the proof into the universe and the tapd node syncing the universe while generating an address.

I see what you meant earlier when you suggested that the NewAddr endpoint could handle universe syncing automatically in the background if needed.

I've also seen a few spots where we can improve logging.

ffranr avatar Oct 15 '25 14:10 ffranr

Running tapcli universe sync --universe_host universe.signet.laisee.org:8443 --group_key 02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981 returns:

{
    "synced_universes": []
}

I am still unable to generate a taproot assets address for this asset with this node.

[tapcli] unable to make addr: rpc error: code = Unknown desc = unable to make new addr: unable to make address for unknown asset AssetSpecifier(id=, group_pub_key=02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981): asset lookup failed for asset: issuance-0389c8fb2a8691e31d311329782b320ac941765c0d50f7d40db03102fa26388f

I have since updated to the latest master (version": "0.7.0-alpha.rc1 commit=v0.7.0-rc1-149-ge6ae082c) and restarted both the sender and receiver nodes.

Liongrass avatar Oct 15 '25 16:10 Liongrass

In the 2025-10-09_tapd.log you shared, I see the following entry:

2025-10-09 21:18:27.986 [WRN] UNIV: Cannot push proof via logged server push: cannot push proof to remote server(signet.universe.lightning.finance:443): cannot push proof to remote server(signet.universe.lightning.finance:443): rpc error: code = Unknown desc = proof insert is disabled for the given universe

I wonder if the initial proof push actually succeeded. Are these logs from node A or node B in your setup?

Even if 2025-10-09_tapd.log corresponds to node B, the failed insertion indicates that your universe server may not be configured to accept proof insertion for the specified asset group. This raises the question of whether node A was ever able to sync the proof to the universe in the first place.

I think you should double-check your universe server configuration to confirm that proof insertion is enabled for the relevant group key.

We need to improve the output of command:

tapcli universe sync --universe_host universe.signet.laisee.org:8443 --group_key 02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981

It isn't communicating the current universe state adequately.

ffranr avatar Oct 16 '25 11:10 ffranr

On both the sender and recipient node the command tapcli universe sync --universe_host universe.signet.laisee.org:8443 --group_key 02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981 returns:

{
    "synced_universes": []
}

The logs should be from the recipient node.

I think the log entry Cannot push proof via logged server push refers to a different asset though, and also to a different universe. The default universe to my knowledge is not upgraded, so it's no surprise that it cannot handle the proofs.

2025-10-09 21:18:27.986 [WRN] UNIV: Cannot push proof via logged server push: cannot push proof to remote server(signet.universe.lightning.finance:443): cannot push proof to remote server(signet.universe.lightning.finance:443): rpc error: code = Unknown desc = proof insert is disabled for the given universe

I made sure that my universe (universe.signet.laisee.org:8443) is configured properly. The command tapcli universe federation config info on the universe node returns:

{
    "global_sync_configs": [
        {
            "proof_type": "PROOF_TYPE_ISSUANCE",
            "allow_sync_insert": true,
            "allow_sync_export": true
        },
        {
            "proof_type": "PROOF_TYPE_TRANSFER",
            "allow_sync_insert": true,
            "allow_sync_export": true
        }
    ],
    "asset_sync_configs": []
}

That's the configuration I'm looking for, right?

Liongrass avatar Oct 16 '25 17:10 Liongrass

I'm now running your patch from #1853. I then restart tapd (0.7.0-alpha.rc1 commit=v0.7.0-rc1-156-gce30ec95).

I run the command tapcli universe sync --universe_host universe.signet.laisee.org:8443 --group_key 02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981

The output reads:

2025-10-16 18:01:04.836 [INF] TSVR: Connecting to Universe server at universe.signet.laisee.org:8443
2025-10-16 18:01:04.836 [INF] UNIV: Fetching 1 roots
2025-10-16 18:01:04.884 [DBG] UNIV: UniverseRoot(issuance-0389c8fb2a8691e31d311329782b320ac941765c0d50f7d40db03102fa26388f) not found in remote universe
2025-10-16 18:01:04.884 [INF] UNIV: Obtained 0 roots from remote Universe server

Liongrass avatar Oct 16 '25 18:10 Liongrass

Does this include the extra log line you are looking for? These are the logs from the node trying to generate a taproot assets address for group key 02974ff1db5475c7f440d27e3c3a6946498e55ad1f0fe663ec89ef2e00c4618981

^[[A2025-10-16 22:50:08.904 [INF] UNIV: Attempting to sync universe: host=universe.signet.laisee.org:8443, sync_type=issuance, ids=([]universe.Identifier) (len=1 cap=1) {
 (universe.Identifier) issuance-0389c8fb2a8691e31d311329782b320ac941765c0d50f7d40db03102fa26388f
}

2025-10-16 22:50:08.905 [INF] TSVR: Connecting to Universe server at universe.signet.laisee.org:8443
2025-10-16 22:50:08.905 [INF] UNIV: Fetching 1 roots
2025-10-16 22:50:08.937 [DBG] UNIV: UniverseRoot(issuance-0389c8fb2a8691e31d311329782b320ac941765c0d50f7d40db03102fa26388f) not found in remote universe
2025-10-16 22:50:08.938 [INF] UNIV: Obtained 0 roots from remote Universe server

Liongrass avatar Oct 16 '25 22:10 Liongrass

I'm having similar problem, Node A minted an asset and I'm able to create an address for that asset in Node A, but Node B cannot create an address for the minted asset. I'm getting this kind of error unable to make new addr: unable to make address for unknown asset xxxxxxxxxxx: asset lookup failed for asset: issuance-xxxxxxxxx Any idea?

iamgutz avatar Oct 27 '25 23:10 iamgutz

I'm having similar problem, Node A minted an asset and I'm able to create an address for that asset in Node A, but Node B cannot create an address for the minted asset. I'm getting this kind of error unable to make new addr: unable to make address for unknown asset xxxxxxxxxxx: asset lookup failed for asset: issuance-xxxxxxxxx Any idea?

Please share the following:

  • Logs for both nodes A and B.
  • The tapd versions for both nodes.
  • The universe server address being used.

We need to determine whether node A successfully inserts the issuance proof into the universe server and whether node B can sync and pull it from there.

ffranr avatar Oct 28 '25 00:10 ffranr

Does version 0.7 support free transfer of taproot assets?

Hunterstech avatar Nov 05 '25 06:11 Hunterstech

I believe we established that this one was resolved. @iamgutz please just make a fresh issue if you're still encountering a problem here.

jtobin avatar Dec 02 '25 20:12 jtobin