Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Premium #264

Merged
merged 20 commits into from
Mar 21, 2025
Merged

Premium #264

merged 20 commits into from
Mar 21, 2025

Conversation

YusukeShimizu
Copy link
Contributor

@YusukeShimizu YusukeShimizu commented Dec 23, 2023

@YusukeShimizu YusukeShimizu changed the title Premium feature Premium Dec 23, 2023
@YusukeShimizu YusukeShimizu force-pushed the premium-feature branch 2 times, most recently from dc5b87f to 8870169 Compare December 23, 2023 05:15
@YusukeShimizu YusukeShimizu changed the title Premium [wip]Premium Dec 23, 2023
@YusukeShimizu YusukeShimizu force-pushed the premium-feature branch 7 times, most recently from 6f44cbc to 4c591cc Compare December 24, 2023 04:02
@YusukeShimizu YusukeShimizu changed the title [wip]Premium Premium Dec 25, 2023
@wtogami
Copy link
Contributor

wtogami commented Dec 25, 2023

Asking for opinions: Should we have fine grained configuration to allow for setting certain peers a different premium fee rate?
I suppose that would complicate things a lot and make the configuration look ugly. But is this a highly desirable feature?

@Impa10r
Copy link
Contributor

Impa10r commented Dec 25, 2023

Asking for opinions: Should we have fine grained configuration to allow for setting certain peers a different premium fee rate? I suppose that would complicate things a lot and make the configuration look ugly. But is this a highly desirable feature?

I think no. But allow separate premiums for received swap ins and swap outs, including negative values. This will allow managing liquidity among BTC, LBTC and Lightning.

@YusukeShimizu
Copy link
Contributor Author

YusukeShimizu commented Dec 27, 2023

Asking for opinions: Should we have fine grained configuration to allow for setting certain peers a different premium fee rate?
I suppose that would complicate things a lot and make the configuration look ugly. But is this a highly desirable feature?

In the future, it may be better to allow premiums to be set according to the degree of use, such as channels that flow easily in both directions or channels that flow only in one direction.
However, since this has nothing to do with protocol changes, I think there is an option to not implement it in this PR and consider it later.

@YusukeShimizu
Copy link
Contributor Author

But allow separate premiums for received swap ins and swap outs, including negative values. This will allow managing liquidity among BTC, LBTC and Lightning.

It is possible to configure swap in and swap out in policy.conf, including negative values.

@grubles
Copy link
Collaborator

grubles commented Jan 16, 2024

Asking for opinions: Should we have fine grained configuration to allow for setting certain peers a different premium fee rate? I suppose that would complicate things a lot and make the configuration look ugly. But is this a highly desirable feature?

Yes I think so. Channels may have different characteristics that would benefit from having individual premium/discount rates to incentivize swapping in one direction or the other, similar to how routing fee rates can be used to influence how a channel is used?

@YusukeShimizu YusukeShimizu force-pushed the premium-feature branch 2 times, most recently from e49ad78 to 65dcce8 Compare January 20, 2024 09:08
@grubles
Copy link
Collaborator

grubles commented Jan 26, 2024

Looks like the premium info is missing from the CLN listpeers:

$ lightning-cli --signet peerswap-listpeers
[
   {
      "nodeid": "035ca2fe4793a5e789ce846062eb4834f573c060d9200ce77544a29b48a0aa5923",
      "swaps_allowed": true,
      "supported_assets": [
         "btc",
         "lbtc"
      ],
      "channels": [
         {
            "short_channel_id": "140490x1x0",
            "local_balance": 224000900,
            "remote_balance": 75999100,
            "state": "CHANNELD_NORMAL"
         },
         {
            "short_channel_id": "162922x1x0",
            "local_balance": 201341,
            "remote_balance": 18668659,
            "state": "CHANNELD_NORMAL"
         }
      ],
      "sent": {
         "total_swaps_out": 0,
         "total_swaps_in": 0,
         "total_sats_swapped_out": 0,
         "total_sats_swapped_in": 0
      },
      "received": {
         "total_swaps_out": 10,
         "total_swaps_in": 12,
         "total_sats_swapped_out": 238000000,
         "total_sats_swapped_in": 144000000
      }
   }
]

@grubles
Copy link
Collaborator

grubles commented Jan 26, 2024

Would it be useful to have the premium rate limit be a config option in policy.conf too?

@grubles
Copy link
Collaborator

grubles commented Jan 26, 2024

Hitting this with CLN as sender:

$ lightning-cli --signet peerswap-swap-out 140490x1x0 100000000 lbtc 1000000
{
   "code": -32603,
   "message": "-32603: Incompatible types: SwapOut.bool (bool) != float64"
}

@grubles
Copy link
Collaborator

grubles commented Jan 26, 2024

CLN plugin crashed when trying a listswaps:

$ lightning-cli --signet peerswap-listswaps
{
   "code": -4,
   "message": "Plugin terminated before replying to RPC call."
}

Looks like peerswapd segfaulted when trying listswaps too:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0xdb1460]

goroutine 142825 [running]:
github.com/elementsproject/peerswap/swap.(*SwapData).GetPremium(...)
        /home/user/builds/master_peerswap/swap/swap.go:239
github.com/elementsproject/peerswap/peerswaprpc.PrettyprintFromServiceSwap(0xc0002c5600)
        /home/user/builds/master_peerswap/peerswaprpc/server.go:576 +0x300
github.com/elementsproject/peerswap/peerswaprpc.(*PeerswapServer).ListSwaps(0xf6cf00?, {0xc0006f4120?, 0x498fe6?}, 0x0?)
        /home/user/builds/master_peerswap/peerswaprpc/server.go:321 +0xfd
github.com/elementsproject/peerswap/peerswaprpc._PeerSwap_ListSwaps_Handler({0x10505a0?, 0xc000400840}, {0x12b8dd8, 0xc0006f40f0}, 0xc00043e620, 0x0)
        /home/user/builds/master_peerswap/peerswaprpc/peerswaprpc_grpc.pb.go:357 +0x169
google.golang.org/grpc.(*Server).processUnaryRPC(0xc000320b40, {0x12c0880, 0xc00040e820}, 0xc0006e6360, 0xc00001f8f0, 0x199ffc8, 0x0)
        /home/user/go/pkg/mod/google.golang.org/grpc@v1.50.0/server.go:1318 +0xb18
google.golang.org/grpc.(*Server).handleStream(0xc000320b40, {0x12c0880, 0xc00040e820}, 0xc0006e6360, 0x0)
        /home/user/go/pkg/mod/google.golang.org/grpc@v1.50.0/server.go:1659 +0x9e7
google.golang.org/grpc.(*Server).serveStreams.func1.2()
        /home/user/go/pkg/mod/google.golang.org/grpc@v1.50.0/server.go:955 +0x8d
created by google.golang.org/grpc.(*Server).serveStreams.func1 in goroutine 142824
        /home/user/go/pkg/mod/google.golang.org/grpc@v1.50.0/server.go:953 +0x246

The logs appear to show that the swap I attempted succeeded however.

2024/01/26 19:03:15 [INFO] [Swap:cdd8bff7205897ad5ed687e830c434a31abf80fdca1f011d32e256bbab836057] Swap claimed with preimage 6fb9a8eb04df189ffe3f78772ff74b29c36ab55ef3923edf5a6b56999cd8cc09

@YusukeShimizu
Copy link
Contributor Author

Thanks for the test.
Perhaps some of the behavior is a bug.
I'll investigate and fix it.

@YusukeShimizu
Copy link
Contributor Author

YusukeShimizu commented Jan 30, 2024

FIXED.

premium info is missing from the CLN listpeers

SwapInPremiumRatePPM and SwapInPremiumRatePPM are added to the ListPeers.
This is an additional information, we are currently managing the peerswapd and the cln-plugin in duplicate, but this will be fixed by #231.

Hitting this with CLN as sender

I rearranged the order of commands.
I think it is natural that the force flag should be at the end.

CLN plugin crashed when trying a listswaps.

The source of the information was an error, which I corrected.

@Impa10r
Copy link
Contributor

Impa10r commented Jan 30, 2024

@YusukeShimizu Hello. Do you plan RPC endpoints to configure premium rates?

@YusukeShimizu
Copy link
Contributor Author

Hello. Do you plan RPC endpoints to configure premium rates?

I have no definite plan.

There are some opinions that a fine-grained premium setting is needed, so I may need to think about an appropriate design for that (such as having RPC endpoints, etc.)

@grubles
Copy link
Collaborator

grubles commented Jan 31, 2024

At 9c34c47 my peerswapd segfaults when attempting a swap-out.

2024/01/31 15:31:22 [INFO] [Swap:69d53116566e72ac131f343a7dfc492879042c02752c0557369cbd8674703eee] Start new swap-out: peer: 036e680823a129ac9a2eeb8c43514a5b6cb09ae28e3e698a0e34aaa8865d6cc344 chanId: 140490:1:0 initiator: 035ca2fe4793a5e789ce846062eb4834f573c060d9200ce77544a29b48a0aa5923 amount 100000000
2024/01/31 15:31:22 [DEBUG] [FSM] event:id: 69d53116566e72ac131f343a7dfc492879042c02752c0557369cbd8674703eee, Event_ActionSucceeded on State_SwapOutSender_CreateSwap
2024/01/31 15:31:22 [DEBUG] [FSM] event:id: 69d53116566e72ac131f343a7dfc492879042c02752c0557369cbd8674703eee, Event_ActionSucceeded on State_SwapOutSender_SendRequest
2024/01/31 15:31:22 [DEBUG] [Messenger] From: 036e680823a129ac9a2eeb8c43514a5b6cb09ae28e3e698a0e34aaa8865d6cc344 got msgtype: a45b for swap: 69d53116566e72ac131f343a7dfc492879042c02752c0557369cbd8674703eee
2024/01/31 15:31:22 [DEBUG] [FSM] event:id: 69d53116566e72ac131f343a7dfc492879042c02752c0557369cbd8674703eee, Event_OnFeeInvoiceReceived on State_SwapOutSender_AwaitAgreement
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x58 pc=0xcb6c9f]

goroutine 69 [running]:
github.com/elementsproject/peerswap/swap.(*CheckPremiumAmount).Execute(0xc0006bd600?, 0x10ad8bb?, 0xc000318780)
        /home/user/builds/master_peerswap/swap/actions.go:215 +0x11f
github.com/elementsproject/peerswap/swap.(*SwapStateMachine).SendEvent(0xc0006bd600, {0x10a2a12, 0x1a}, {0x12b42d0?, 0xc0001b8e00})
        /home/user/builds/master_peerswap/swap/fsm.go:233 +0x7ae
github.com/elementsproject/peerswap/swap.(*SwapService).OnSwapOutAgreementReceived(0xc00055c2c0?, 0xc0001b8e00)
        /home/user/builds/master_peerswap/swap/service.go:695 +0x92
github.com/elementsproject/peerswap/swap.(*SwapService).OnMessageReceived(0xc0001cfee0?, {0xc000841c20, 0x42}, {0xc0005f5028, 0x4}, {0xc00055c2c0, 0x2b9, 0x2c0})
        /home/user/builds/master_peerswap/swap/service.go:218 +0x906
github.com/elementsproject/peerswap/lnd.(*MessageListener).Start.func1()
        /home/user/builds/master_peerswap/lnd/messagelistener.go:84 +0x473
created by github.com/elementsproject/peerswap/lnd.(*MessageListener).Start in goroutine 1
        /home/user/builds/master_peerswap/lnd/messagelistener.go:60 +0x10b

@YusukeShimizu
Copy link
Contributor Author

I fixed it on d8b683d

@YusukeShimizu
Copy link
Contributor Author

Yes, they can go negative.

@grubles
Copy link
Collaborator

grubles commented Mar 12, 2025

Tested ACK c84e53a

@Impa10r
Copy link
Contributor

Impa10r commented Mar 13, 2025

I think there should be a method to remove a peer's specific rate from the db so that it reverts to the global default value.

@Impa10r
Copy link
Contributor

Impa10r commented Mar 13, 2025

for a positive premium rate, both counterparties see the same report, so not possible to understand who paid the premium to whom.

~ $ pscli listactiveswaps
{
  "swaps": [
    {
      "id": "027e62d4cc1bd94a7fa69e47e76fec6cf708cd9c89a504ba8084c94024c9b6c0",
      "created_at": "1741891106",
      "asset": "lbtc",
      "type": "swap-out",
      "role": "receiver",
      "state": "State_SwapOutReceiver_AwaitClaimInvoicePayment",
      "initiator_node_id": "02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29",
      "peer_node_id": "02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29",
      "amount": "100000",
      "channel_id": "2543197:37:1",
      "opening_tx_id": "1659a308e9f0ee524172052d6790bdbec3d271ed8860728202e5bd9d5676677d",
      "claim_tx_id": "",
      "cancel_message": "",
      "lnd_chan_id": "2796274673227464705",
      "premium_amount": "-1000"
    }
  ]
}
~ $ pscli2 listactiveswaps
{
  "swaps": [
    {
      "id": "027e62d4cc1bd94a7fa69e47e76fec6cf708cd9c89a504ba8084c94024c9b6c0",
      "created_at": "1741891106",
      "asset": "lbtc",
      "type": "swap-out",
      "role": "sender",
      "state": "State_SwapOutSender_AwaitTxConfirmation",
      "initiator_node_id": "02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29",
      "peer_node_id": "020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854",
      "amount": "100000",
      "channel_id": "2543197:37:1",
      "opening_tx_id": "1659a308e9f0ee524172052d6790bdbec3d271ed8860728202e5bd9d5676677d",
      "claim_tx_id": "",
      "cancel_message": "",
      "lnd_chan_id": "2796274673227464705",
      "premium_amount": "-1000"
    }
  ]
}

A swap with a negative fee rate also resulted in both parties seeing a negative premium_amount:

    {
      "id": "cfc216f5e7de50a95b36e3e23a45aa9bbfb981407aab89fc355e583cd8ca784b",
      "created_at": "1741891374",
      "asset": "lbtc",
      "type": "swap-out",
      "role": "sender",
      "state": "State_ClaimedPreimage",
      "initiator_node_id": "02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29",
      "peer_node_id": "020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854",
      "amount": "100000",
      "channel_id": "2543197:37:1",
      "opening_tx_id": "72c8ca5b50635e9ea25b182535e3cf3323818b3d183aca0f0ee49965ae8c9df9",
      "claim_tx_id": "ea54214d75fa423d4fa21381be700dcdcd649bdfffa8dde6c0148ef67d526dae",
      "cancel_message": "",
      "lnd_chan_id": "2796274673227464705",
      "premium_amount": "-1000"
    }
    
     {
      "id": "cfc216f5e7de50a95b36e3e23a45aa9bbfb981407aab89fc355e583cd8ca784b",
      "created_at": "1741891374",
      "asset": "lbtc",
      "type": "swap-out",
      "role": "receiver",
      "state": "State_ClaimedPreimage",
      "initiator_node_id": "02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29",
      "peer_node_id": "02e74acffd6375fa71a038e780064ae1765ebaf520bf7b9a5681e8ff9bfe36ce29",
      "amount": "100000",
      "channel_id": "2543197:37:1",
      "opening_tx_id": "72c8ca5b50635e9ea25b182535e3cf3323818b3d183aca0f0ee49965ae8c9df9",
      "claim_tx_id": "",
      "cancel_message": "",
      "lnd_chan_id": "2796274673227464705",
      "premium_amount": "-1000"
    }


      "peer_premium": {
        "node_id": "020ed4ea09c56c3e398190ae5ac60504fe4e56d6989d49e2f7845f14608c546854",
        "rates": [
          {
            "asset": "BTC",
            "operation": "SWAP_IN",
            "premium_rate_ppm": "0"
          },
          {
            "asset": "BTC",
            "operation": "SWAP_OUT",
            "premium_rate_ppm": "0"
          },
          {
            "asset": "LBTC",
            "operation": "SWAP_IN",
            "premium_rate_ppm": "0"
          },
          {
            "asset": "LBTC",
            "operation": "SWAP_OUT",
            "premium_rate_ppm": "-10000"
          }


...but the LN payment was 1% smaller, so the discount worked:

        {
            "payment_hash": "6257f08f89a847ad819cf522db0b30b8e11b209469679413651862d55bc60d20",
            "value": "99000",
            "creation_date": "1741891452",
            "fee": "0",
            "payment_preimage": "2729f480220e22512e90a9986cccb99ad16898650bc9a32ae53f8be57688d2a2",
            "value_sat": "99000",
            "value_msat": "99000000",
 

@grubles
Copy link
Collaborator

grubles commented Mar 13, 2025

   "premium_amount": "-1000"

For this we could maybe change it to something like premium_rate_ppm and then have a separate total_premium_amount to show the actual premium paid? ?

@Impa10r
Copy link
Contributor

Impa10r commented Mar 13, 2025

   "premium_amount": "-1000"

For this we could maybe change it to something like premium_rate_ppm and then have a separate total_premium_amount to show the actual premium paid? ?

ppm is not needed, it can be computed from premium_amount and swap amount. I think the premium amount is already correct, except the sign. it should be positive for the peer that received premium, and negative for the one who paid it.

@YusukeShimizu YusukeShimizu force-pushed the premium-feature branch 4 times, most recently from 91e375c to f4002f2 Compare March 14, 2025 05:34

Verified

This commit was signed with the committer’s verified signature.
bendvc Ben Chypak
Add a new RPC and CLI command to delete peer-specific premium rates.
Ensure default rate usage once the per-peer rate is removed.
@YusukeShimizu
Copy link
Contributor Author

I just added a new RPC and CLI command to remove a peer-specific premium rate, so it falls back to the global default once the per-peer rate is deleted.

Also, I adjusted the sign in PrettyprintFromServiceSwap for the sender role to ensure it’s displayed correctly.

b26c621

delete premium rate

lnd

./bin/pscli peerswap1 updatepremiumrate --asset LBTC --operation swap_out --node_id 02149a96f829dcfbea2089fd5e3fe3fd9d2d08157694102d3ddf6db346d5dd161d --rate 100
{
  "asset": "LBTC",
  "operation": "SWAP_OUT",
  "premium_rate_ppm": "100"
}
./bin/pscli peerswap1 deletepeerpremiumrate --asset LBTC --operation SWAP_OUT --node_id 02149a96f829dcfbea2089fd5e3fe3fd9d2d08157694102d3ddf6db346d5dd161d
{
  "asset": "LBTC",
  "operation": "SWAP_OUT",
}

fall back to default

./bin/pscli peerswap1 getpeerpremiumrate --asset LBTC --operation SWAP_OUT --node_id 02149a96f829dcfbea2089fd5e3fe3fd9d2d08157694102d3ddf6db346d5dd161d
{
  "asset": "LBTC",
  "operation": "SWAP_OUT",
  "premium_rate_ppm": "10000"
}

cln

./bin/clncli peerswap-setpremiumrate 02bc29431b3a13172dd1c469aaa718990c37b3a3a4b8098523ad4c3c61f7fb282c lbtc SWAP_OUT 10000
{
   "asset": 2,
   "operation": 2,
   "premium_rate_ppm": 100
}
./bin/clncli peerswap-deletepremiumrate 02bc29431b3a13172dd1c469aaa718990c37b3a3a4b8098523ad4c3c61f7fb282c lbtc SWAP_OUT
{
   "asset": 2,
   "operation": 2
}

fall back to default

./bin/clncli peerswap-getpremiumrate 02bc29431b3a13172dd1c469aaa718990c37b3a3a4b8098523ad4c3c61f7fb282c lbtc SWAP_OUT
{
   "asset": 2,
   "operation": 2,
   "premium_rate_ppm": 10000
}

PrettyprintFromServiceSwap

./bin/pscli peerswap1 swapout --channel_id $CHANID --sat_amt 1000000 --asset lbtc --premium_limit_rate_ppm 100000
{
  "swap": {
    "id": "c7a54d60bdf3deb0b0e77bc074cc625d84d5e62dda7aa97df40edf5c9e1a0f31",
    "created_at": "1741931535",
    "asset": "lbtc",
    "type": "swap-out",
    "role": "sender",
    "state": "State_SwapOutSender_AwaitTxConfirmation",
    "initiator_node_id": "03854c727bacb9a39da5cb5bd50fdf250747d32b11c4ff56389adfecabf5c91445",
    "peer_node_id": "0276b3477147a0374e5d372c53c394bd1e286cbba613a7ff0fc8afce2d6def07e3",
    "amount": "1000000",
    "channel_id": "116:1:1",
    "opening_tx_id": "05f3d7a7929758ab4c0def7919da41f9b4c184cbd47dd2f85b3694f25a561529",
    "claim_tx_id": "",
    "cancel_message": "",
    "lnd_chan_id": "127543348887553",
    "premium_amount": "-10000"
  }
}
./bin/pscli peerswap2 listswaps
{
  "swaps": [
    {
      "id": "c7a54d60bdf3deb0b0e77bc074cc625d84d5e62dda7aa97df40edf5c9e1a0f31",
      "created_at": "1741931535",
      "asset": "lbtc",
      "type": "swap-out",
      "role": "receiver",
      "state": "State_SwapOutReceiver_AwaitClaimInvoicePayment",
      "initiator_node_id": "03854c727bacb9a39da5cb5bd50fdf250747d32b11c4ff56389adfecabf5c91445",
      "peer_node_id": "03854c727bacb9a39da5cb5bd50fdf250747d32b11c4ff56389adfecabf5c91445",
      "amount": "1000000",
      "channel_id": "116:1:1",
      "opening_tx_id": "05f3d7a7929758ab4c0def7919da41f9b4c184cbd47dd2f85b3694f25a561529",
      "claim_tx_id": "",
      "cancel_message": "",
      "lnd_chan_id": "127543348887553",
      "premium_amount": "10000"
    }
  ]
}

@Impa10r
Copy link
Contributor

Impa10r commented Mar 14, 2025

Tested ACK b26c621

Verified

This commit was signed with the committer’s verified signature.
bendvc Ben Chypak
Replace 'SetDefaultPremiumRate' with 'UpdateGlobalPremiumRate'
Replace
'GetDefaultPremiumRate' with 'GetGlobalPremiumRate'
Adjust commands in usage and docs.

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
add default premium rates for BTC and LBTC swap operations
@YusukeShimizu
Copy link
Contributor Author

YusukeShimizu commented Mar 17, 2025

I have renamed “Premium” to “Global.” 4d37f4d
Below are the default values for the Global Premium:

Asset Swap Type Default PPM
BTC swap in 0
LBTC swap in 0
BTC swap out 2000
LBTC swap out 1000

6369d6a

@Impa10r
Copy link
Contributor

Impa10r commented Mar 17, 2025

ACK 6369d6a

@grubles
Copy link
Collaborator

grubles commented Mar 17, 2025

$ lightning-cli --signet peerswap-getglobalpremiumrate btc swap_in
{
   "asset": 1,
   "operation": 1
}

When the global rate is zero, the premium_rate_ppm field is missing?

LND peerswap has the field:

$ ./builds/peerswap/out/pscli getglobalpremiumrate --asset btc --operation swap_in
{
  "asset":  "BTC",
  "operation":  "SWAP_IN",
  "premium_rate_ppm":  "0"
}

@YusukeShimizu YusukeShimizu force-pushed the premium-feature branch 4 times, most recently from 8d56a98 to 2dc7a91 Compare March 18, 2025 02:07

Partially verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
We cannot verify signatures from co-authors, and some of the co-authors attributed to this commit require their commits to be signed.
Replace direct returns with formatProtoMessage
Ensure multiline formatting with protojson
Preserve indentation and use enums in textual form
@YusukeShimizu
Copy link
Contributor Author

It was caused by how proto.Message was marshaled in a non-human-readable manner.
I addressed it by specifying the marshal option to ensure the field is included.
26268a0 – Use human-readable marshal option.

I’ll keep this in mind for the changes introduced in PR #231 as well.

@grubles
Copy link
Collaborator

grubles commented Mar 19, 2025

Tested ACK 26268a0

@YusukeShimizu YusukeShimizu merged commit e4f15b4 into ElementsProject:master Mar 21, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants