Skip to content

[bug]: Add option to skip courier proof transfer in FundChannel RPC #1483

@ZZiigguurraatt

Description

@ZZiigguurraatt

In #1476 it is requested to allow making on chain payments without requiring a proof courier service to be used. I would also like to see this option for FundChannel as it previously was available by default.

I've just tried to use https://github.com/lightninglabs/tapdvalidation with a recent version of litd/tapd/lnd (lightninglabs/lightning-terminal#987) and I now get the following error:

controller-1  | alice funding a 23f2924c049e18eb39e92092338524986f32e345ba5556b83097955b8e9bca79 channel with bob
controller-1  | alice connecting to bob
controller-1  | syncing the universe of alice to bob (172.99.0.4:8443)
controller-1  | done syncing universe
controller-1  | unknown
controller-1  | ERROR MESSAGE: error funding channel: unable to fund channel, local proof courier is invalid: unsupported proof courier type 'hashmail', please set a universe based (universerpc://) proof courier in the proofcourieraddr configuration option or command line flag
controller-1  | Traceback (most recent call last):
controller-1  |   File "/mini_META/scripts/init_network", line 139, in <module>
controller-1  |     OpenTaprootAssetChannel(funder='alice',   peer='bob',    AssetID=TheAssetID, AssetCapacity=200000000)
controller-1  |   File "/mini_META/scripts/mini_META_lib.py", line 551, in OpenTaprootAssetChannel
controller-1  |     litd_node_objects[funder]['tapd'].fund_taprootasset_channel(asset_amount=AssetCapacity, asset_id=AssetID, peer_pubkey=bytes.fromhex(litd_node_objects[peer]['lnd'].get_info().identity_pubkey), fee_rate_sat_per_vbyte=10,push_sat=int(5*10**4))
controller-1  |   File "/usr/local/lib/python3.10/dist-packages/lndgrpc/errors.py", line 50, in wrapper
controller-1  |     raise exc
controller-1  |   File "/usr/local/lib/python3.10/dist-packages/lndgrpc/errors.py", line 26, in wrapper
controller-1  |     return fnc(*args, **kwargs)
controller-1  |   File "/usr/local/lib/python3.10/dist-packages/lndgrpc/tapchannel.py", line 37, in fund_taprootasset_channel
controller-1  |     response = self.get_tapchannel_stub().FundChannel(request)
controller-1  |   File "/usr/local/lib/python3.10/dist-packages/grpc/_channel.py", line 1181, in __call__
controller-1  |     return _end_unary_response_blocking(state, call, False, None)
controller-1  |   File "/usr/local/lib/python3.10/dist-packages/grpc/_channel.py", line 1006, in _end_unary_response_blocking
controller-1  |     raise _InactiveRpcError(state)  # pytype: disable=not-instantiable
controller-1  | grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
controller-1  | 	status = StatusCode.UNKNOWN
controller-1  | 	details = "error funding channel: unable to fund channel, local proof courier is invalid: unsupported proof courier type 'hashmail', please set a universe based (universerpc://) proof courier in the proofcourieraddr configuration option or command line flag"
controller-1  | 	debug_error_string = "UNKNOWN:Error received from peer ipv4:172.99.0.4:8443 {grpc_message:"error funding channel: unable to fund channel, local proof courier is invalid: unsupported proof courier type \'hashmail\', please set a universe based (universerpc://) proof courier in the proofcourieraddr configuration option or command line flag", grpc_status:2, created_time:"2025-04-24T02:48:34.461005356-04:00"}"
controller-1  | >

tapdvalidation manually syncs the universe before trying to fund the channel. I'm not sure why we need a proof courier if we've done that manually before trying to fund the channel? This was not a problem in earlier versions.

I'm running on regtest and I don't have proofcourieraddr defined. I'm not sure if the default value of universerpc://testnet.universe.lightning.finance:10029 is used for regtest?

I've tried to figure out what itest is doing. I find a few cases where a proof courier is defined when making on chain payments.

https://github.com/lightninglabs/lightning-terminal/blob/72477225a8892b419e8903bf746a443920598cf7/itest/assets_test.go#L89-L98

Can that get inherited/remembered for channel funding?

There are also a few spots in itest where the courier is explicitly defined like this

https://github.com/lightninglabs/lightning-terminal/blob/72477225a8892b419e8903bf746a443920598cf7/itest/litd_custom_channels_test.go#L112-L124

As a workaround in tapdvalidation, I've added --taproot-assets.proofcourieraddr=universerpc://alice:8443 and I no longer get the error above.

Also, the error message says unsupported proof courier type 'hashmail', but I've not set a hashmail server and I can't find any documentation on setting up a hashmail server address. I think this error message should be less confusing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions