{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":424131890,"defaultBranch":"master","name":"bolts","ownerLogin":"t-bast","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2021-11-03T07:40:28.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/31281497?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1720622355.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"c073ef815152e1f523c39a3ff6d7a17ebbfc8734","ref":"refs/heads/clarify-onionmsg","pushedAt":"2024-07-10T14:39:15.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"WIP","shortMessageHtmlLink":"WIP"}},{"before":"fc687e8c7638a65c9120777025ae5ae53e4e622f","after":"64ce121cdc658a4b4a949c055adf8c1284298500","ref":"refs/heads/master","pushedAt":"2024-07-10T11:19:00.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"BOLT04: Add rationale for constant error decryption. (#1154)\n\nTo avoid timing analysis when decrypting failed payments the sender\r\nshould act as if the failure in the route came for the 27th hop.\r\nAlso changed the maximum number of hops in the route from 20 (legacy)\r\nto 27 (tlv onion).","shortMessageHtmlLink":"BOLT04: Add rationale for constant error decryption. (lightning#1154)"}},{"before":"7a5a588a72f28155b1c418ac6574f1889dd4b80f","after":"aece0d8f42310d7e7d128905cf18eb0414c02459","ref":"refs/heads/splicing","pushedAt":"2024-06-06T14:05:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Force-close if `next_funding_txid` don't match\n\nIf both nodes set `next_funding_txid` in their `channel_reestablish`\nmessage, but to a different value, one of them is very buggy. There\nis no way to correctly resolve this and the channel must be closed.\n\nSuggested by @ddustin","shortMessageHtmlLink":"Force-close if next_funding_txid don't match"}},{"before":"3e9b5728cc29826748be3047d777f15b39567726","after":null,"ref":"refs/heads/remove-old-features-typos","pushedAt":"2024-06-03T20:13:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"}},{"before":"fdaf7d61949f2766cc59effa8f2279dd9d7deebd","after":"3e9b5728cc29826748be3047d777f15b39567726","ref":"refs/heads/remove-old-features-typos","pushedAt":"2024-05-21T08:59:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Clean-up: follow-up on removing spec features\n\nThis is a follow-up to https://github.com/lightning/bolts/pull/1092\nthat fixes the following issues:\n\n- fix a few typos\n- remove non-zero-fee anchors test cases\n- remove `remote_pubkey` rotation","shortMessageHtmlLink":"Clean-up: follow-up on removing spec features"}},{"before":"db278ab9b2baa0b30cfe79fb3de39280595938d3","after":"fc687e8c7638a65c9120777025ae5ae53e4e622f","ref":"refs/heads/master","pushedAt":"2024-05-21T08:55:49.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"BOLT 9: Remove initial_routing_sync.\n\nThis only had an effect when `gossip_queries` was not negotiated, which is now assumed.\n\nSigned-off-by: Rusty Russell ","shortMessageHtmlLink":"BOLT 9: Remove initial_routing_sync."}},{"before":"b16ddfe687af146de8761f49dff1727012e94d3f","after":"45f69066b86502e53820d5622a43d5baa3b3f98e","ref":"refs/heads/extensible-liquidity-ads","pushedAt":"2024-05-14T09:09:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Introduce a dedicated `payment_type` field\n\nThe previous commits assumed that paying the liquidity fees in a\ndifferent way than during the `interactive-tx` session would be\nintroduced by creating a new `lease_type`. However, it turns out\nthat in most cases, how the fees are paid is not correlated to the\n`lease_type`. We thus introduce a dedicated type for payment options.\n\nWe only define one `payment_type`, where the fees are paid from the\nbuyer's channel balance during the `interactive-tx` session, but it\nis easy to introduce different `payment_type`s that reuse the existing\nlease type but pay the fees using pending HTLCs for example.","shortMessageHtmlLink":"Introduce a dedicated payment_type field"}},{"before":"357a8b01ae4d63023d8e65f644ead966e367800c","after":"b16ddfe687af146de8761f49dff1727012e94d3f","ref":"refs/heads/extensible-liquidity-ads","pushedAt":"2024-05-14T09:02:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Introduce a dedicated `payment_type` field\n\nThe previous commits assumed that paying the liquidity fees in a\ndifferent way than during the `interactive-tx` session would be\nintroduced by creating a new `lease_type`. However, it turns out\nthat in most cases, how the fees are paid is not correlated to the\n`lease_type`. We thus introduce a dedicated type for payment options.\n\nWe only define one `payment_type`, where the fees are paid from the\nbuyer's channel balance during the `interactive-tx` session, but it\nis easy to introduce different `payment_type`s that reuse the existing\nlease type but pay the fees using pending HTLCs for example.","shortMessageHtmlLink":"Introduce a dedicated payment_type field"}},{"before":"eb7bfe2d71cda2975e0b1968a106d40bcdb3d55e","after":null,"ref":"refs/heads/delay-channel-edge-closed","pushedAt":"2024-05-07T07:45:47.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"}},{"before":"54ecbc04f99af57a84309ebf5f91e53f75b6cdcf","after":"7a5a588a72f28155b1c418ac6574f1889dd4b80f","ref":"refs/heads/splicing","pushedAt":"2024-05-02T09:30:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Channel Splicing (feature 62/63)\n\nSplicing allows spending the current funding transaction to replace it\nwith a new one that changes the capacity of the channel, allowing both\npeers to add or remove funds to/from their channel balance.\n\nSplicing takes place while a channel is quiescent, to ensure that both\npeers have the same view of the current commitments.\n\nWe don't want channels to be unusable while waiting for transactions to\nconfirm, so channel operation returns to normal once the splice tx has\nbeen signed and we're waiting for it to confirm. The channel can then\nbe used for payments, as long as those payments are valid for every\npending splice transactions. Splice transactions can be RBF-ed to speed\nup confirmation.\n\nOnce one of the pending splice transactions confirms and reaches\nacceptable depth, peers exchange `splice_locked` to discard the other\npending splice transactions and the previous funding transaction. The\nconfirmed splice transaction becomes the channel funding transaction.\n\nNodes then advertize this spliced channel to the network, so that nodes\nkeep routing payments through it without any downtime.","shortMessageHtmlLink":"Channel Splicing (feature 62/63)"}},{"before":null,"after":"54ecbc04f99af57a84309ebf5f91e53f75b6cdcf","ref":"refs/heads/splicing","pushedAt":"2024-04-30T16:36:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"WIP\n\nTODO:\n\n- add a message diagram in the splicing section to showcase the multiple `commitment_signed`\n- add test vectors from https://gist.github.com/t-bast/1ac31f4e27734a10c5b9847d06db8d86\n - make sure RBF isn't mixed up with chains of splices (which shouldn't be possible)","shortMessageHtmlLink":"WIP"}},{"before":null,"after":"eb7bfe2d71cda2975e0b1968a106d40bcdb3d55e","ref":"refs/heads/delay-channel-edge-closed","pushedAt":"2024-04-29T09:47:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"gossip: 12-blocks delay channel closed follow-up\n\nWe introduced a 12-blocks delay for channel closing in #1004, but we\ndidn't update the requirement in the section about pruning.","shortMessageHtmlLink":"gossip: 12-blocks delay channel closed follow-up"}},{"before":"08ce2f6f83619b777bebd86d6dff4a29096e35ae","after":"db278ab9b2baa0b30cfe79fb3de39280595938d3","ref":"refs/heads/master","pushedAt":"2024-04-29T08:57:05.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Merge pull request #1151 from Roasbeef/blinded-paths-notation\n\nBOLT-04: use underscores in place of parens for blinded paths notation","shortMessageHtmlLink":"Merge pull request lightning#1151 from Roasbeef/blinded-paths-notation"}},{"before":"58f2fdd013e2ad972750bcd00e87f3e56ba70ed5","after":"357a8b01ae4d63023d8e65f644ead966e367800c","ref":"refs/heads/extensible-liquidity-ads","pushedAt":"2024-04-23T09:50:33.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Fix PR comments\n\nBy @tnull and @JssDWt","shortMessageHtmlLink":"Fix PR comments"}},{"before":null,"after":"fdaf7d61949f2766cc59effa8f2279dd9d7deebd","ref":"refs/heads/remove-old-features-typos","pushedAt":"2024-04-17T15:28:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"More spec clean-up and fixes\n\n- fix a few typos\n- remove non-zero-fee anchors test cases\n- remove `remote_pubkey` rotation","shortMessageHtmlLink":"More spec clean-up and fixes"}},{"before":"0c5ea07b5846fa83f0b6c99d781623001e874975","after":"58f2fdd013e2ad972750bcd00e87f3e56ba70ed5","ref":"refs/heads/extensible-liquidity-ads","pushedAt":"2024-04-15T13:53:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Extensible liquidity ads rates\n\nAdd the ability to advertise rates at which nodes wish to sell their\nliquidity. Buyers can then connect to sellers and request liquidity,\nat one of the advertised rates.\n\nThis can be used when creating a dual-funded channel, where both\nparticipants contribute to the funding transaction, and one of them\nis paid for (some of) their contribution. This can also be used to\nsplice additional liquidity into existing channels, when splicing is\nsupported.\n\nWe support multiple types of liquidity leases, and use an extensible\nformat to allow adding new types of leases in the future. This can be\nuseful to allow different ways of paying the lease fees, and different\nconstraints on the seller or buyer side.\n\nThe existing lease types don't add any constraints to the commitment\ntransactions. The lease duration isn't protected by script opcodes,\nwhich means that the seller could immediately close the channel, or\nsplice funds out. It is up to the buyer to then blacklist that seller.\n\nWe can in the future modify the commitment transactions to restrict the\nseller: that can be done by introducing a new `lease_type` if it is\nconsidered useful.","shortMessageHtmlLink":"Extensible liquidity ads rates"}},{"before":"60de4a09727c20dea330f9ee8313034de6e50594","after":"08ce2f6f83619b777bebd86d6dff4a29096e35ae","ref":"refs/heads/master","pushedAt":"2024-04-15T13:53:24.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Fix broken link in BOLT-2 (#1148)","shortMessageHtmlLink":"Fix broken link in BOLT-2 (lightning#1148)"}},{"before":null,"after":"0c5ea07b5846fa83f0b6c99d781623001e874975","ref":"refs/heads/extensible-liquidity-ads","pushedAt":"2024-04-12T14:14:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"WIP","shortMessageHtmlLink":"WIP"}},{"before":"6e799ca290afcd05e0a8d55a4c0265bf48b3fce1","after":null,"ref":"refs/heads/advertize-liquidity-ads-range","pushedAt":"2024-04-11T16:03:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"}},{"before":"393a3efa49fbf0723913c75480a63591d0bc6fdb","after":"07e511f703dbaab99cc96e8825c6c3447840905e","ref":"refs/heads/advertize-liquidity-ads","pushedAt":"2024-04-11T16:03:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Add amount range to `lease_rate` (#1)\n\nAdd amount range to `lease_rate`.","shortMessageHtmlLink":"Add amount range to lease_rate (#1)"}},{"before":null,"after":"6e799ca290afcd05e0a8d55a4c0265bf48b3fce1","ref":"refs/heads/advertize-liquidity-ads-range","pushedAt":"2024-03-27T15:55:49.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Add amount range to `lease_rate`\n\nWe add a minimum and maximum amount to the lease rate. This allows\nsellers to provide different rates depending on the amount that is\npurchased. Since the number of utxos used will likely vary based\non the amount, this also lets them use more accurate funding weights\nto ensure they don't end up paying too much of the on-chain fees.\n\nWith that data added, a lease rate uses 24 bytes. We limit the number\nof rates in a `node_announcement` to 10, which doesn't make it too\nharmful in terms of bandwidth usage for the gossip network.","shortMessageHtmlLink":"Add amount range to lease_rate"}},{"before":null,"after":"393a3efa49fbf0723913c75480a63591d0bc6fdb","ref":"refs/heads/advertize-liquidity-ads","pushedAt":"2024-03-05T16:56:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Advertise liquidity ads rates\n\nAdd the ability to advertise rates at which nodes wish to sell their\nliquidity. Buyers can then connect to sellers and request liquidity,\nat one of the advertised rates.\n\nThis can be used when creating a dual-funded channel, where both\nparticipants contribute to the funding transaction, and one of them\nis paid for (some of) their contribution. This can also be used to\nsplice additional liquidity into existing channels, when splicing is\nsupported.\n\nWe don't add any constraints to the commitment transaction. The lease\nduration isn't protected by script opcodes, which means that the seller\ncould immediately close the channel, or splice funds out. It is up to\nthe buyer to then blacklist that seller.\n\nWe can in the future modify the commitment transactions to restrict the\nseller: a dedicated feature bit will let us add this seamlessly if it is\nconsidered useful.","shortMessageHtmlLink":"Advertise liquidity ads rates"}},{"before":"ec525cc41805e3b48c164ab2a283e158071a7ae1","after":"60de4a09727c20dea330f9ee8313034de6e50594","ref":"refs/heads/master","pushedAt":"2024-03-05T16:55:46.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"BOLT 7: correct the default `min_final_cltv_expiry_delta` in routing example (#1143)","shortMessageHtmlLink":"BOLT 7: correct the default min_final_cltv_expiry_delta in routing …"}},{"before":null,"after":"c6ef1e99e58314a657863b2a7d4c0028cc497725","ref":"refs/heads/zero-reserve","pushedAt":"2024-02-16T11:30:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Add `option_zero_reserve`\n\nLightning channels require nodes to lock some of their channel funds\ninto a channel reserve, which cannot be used for payments made on\nthat channel. This guarantees that both nodes always have an output\nin the commitment transaction, which they will lose if they publish\na revoked commitment.\n\nWhile this requirement is generally useful, it creates inefficiencies\nsince that liquidity can't be used to relay payments, and provides a\nbad user experience. In some settings, we may want to remove that\nchannel reserve and allow nodes to use all of their channel funds.\n\nThe `option_zero_reserve` feature lets nodes advertise that they\nallow their peers to disable the channel reserve on their side,\nand may lift the same requirement in response.","shortMessageHtmlLink":"Add option_zero_reserve"}},{"before":"9f55ccdfee54534f4de8339f8934415b218ec84a","after":"ec525cc41805e3b48c164ab2a283e158071a7ae1","ref":"refs/heads/master","pushedAt":"2024-02-16T10:28:38.000Z","pushType":"push","commitsCount":22,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Update Signet port to correct hex value in BOLT #1 spec","shortMessageHtmlLink":"Update Signet port to correct hex value in BOLT #1 spec"}},{"before":"0f7c38bc06d17adce24116eff789cd47259d613a","after":null,"ref":"refs/heads/dual-fund-taproot-inputs","pushedAt":"2024-01-30T09:31:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"}},{"before":"8a64c6a1cef979b3f0cecb00ba7a48c2d28b3588","after":"9f55ccdfee54534f4de8339f8934415b218ec84a","ref":"refs/heads/master","pushedAt":"2024-01-30T05:56:27.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Fix typos (#1130)\n\n* BOLT 04: fix typos\r\n* proposals: fix typos","shortMessageHtmlLink":"Fix typos (lightning#1130)"}},{"before":"ff49feb3b7177afbdc99973107b412055ce0bdf3","after":null,"ref":"refs/heads/blinded-path-min-final-cltv-expiry-delta","pushedAt":"2024-01-30T05:52:33.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"}},{"before":null,"after":"ff49feb3b7177afbdc99973107b412055ce0bdf3","ref":"refs/heads/blinded-path-min-final-cltv-expiry-delta","pushedAt":"2024-01-29T10:32:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Add `min_final_expiry_delta` to blinded route example\n\nPayment recipients must ensure that they have a few blocks\nbefore fulfilling the payment, in case the inbound channel\nforce-closes.","shortMessageHtmlLink":"Add min_final_expiry_delta to blinded route example"}},{"before":null,"after":"0f7c38bc06d17adce24116eff789cd47259d613a","ref":"refs/heads/dual-fund-taproot-inputs","pushedAt":"2024-01-03T12:50:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"t-bast","name":"Bastien Teinturier","path":"/t-bast","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31281497?s=80&v=4"},"commit":{"message":"Omit previous transaction for taproot inputs\n\nWe include the whole previous transaction in `tx_add_input` to protect\nagainst malleability attacks that affect segwit v0. Since lightning\nmessages are limited to 65kB, this has an annoying consequence: if the\ninput you're trying to spend comes from a large transaction, you cannot\nuse it with the `interactive-tx` protocol.\n\nThis is happening in practice with coinjoins and payouts from mining\npools. Since segwit v1+ is not affected by this malleability issue,\nwe can relax that requirement and only send the corresponding `txout`.","shortMessageHtmlLink":"Omit previous transaction for taproot inputs"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEe94W6AA","startCursor":null,"endCursor":null}},"title":"Activity · t-bast/bolts"}