Add NIP-11 relay synchronization and group management features
Some checks failed
Go / build (push) Has been cancelled
Go / release (push) Has been cancelled

- Introduced a new `sync` package for managing NIP-11 relay information and relay group configurations.
- Implemented a cache for NIP-11 documents, allowing retrieval of relay public keys and authoritative configurations.
- Enhanced the sync manager to update peer lists based on authoritative configurations from relay group events.
- Updated event handling to incorporate policy checks during event imports, ensuring compliance with relay rules.
- Refactored various components to utilize the new `sha256-simd` package for improved performance.
- Added comprehensive tests to validate the new synchronization and group management functionalities.
- Bumped version to v0.24.1 to reflect these changes.
This commit is contained in:
2025-11-03 18:17:15 +00:00
parent e161d0e4be
commit e56bf76257
83 changed files with 3712 additions and 7417 deletions

View File

@@ -13,7 +13,7 @@ import (
"lol.mleku.dev/chk"
"lol.mleku.dev/errorf"
p256k1signer "p256k1.mleku.dev/signer"
"next.orly.dev/pkg/crypto/sha256"
"github.com/minio/sha256-simd"
"next.orly.dev/pkg/encoders/hex"
"next.orly.dev/pkg/interfaces/signer"
"next.orly.dev/pkg/utils"

View File

@@ -10,7 +10,7 @@ import (
"github.com/stretchr/testify/assert"
"lol.mleku.dev/chk"
"next.orly.dev/pkg/crypto/keys"
"next.orly.dev/pkg/crypto/sha256"
"github.com/minio/sha256-simd"
"next.orly.dev/pkg/encoders/hex"
)
@@ -258,10 +258,10 @@ func TestCryptPriv001(t *testing.T) {
t,
"0000000000000000000000000000000000000000000000000000000000000001",
"0000000000000000000000000000000000000000000000000000000000000002",
"c41c775356fd92eadc63ff5a0dc1da211b268cbea22316767095b2871ea1412d",
"d927e07202f86f1175e9dfc90fbbcd61963c5ee2506a10654641a826dd371a1b",
"0000000000000000000000000000000000000000000000000000000000000001",
"a",
"AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABee0G5VSK0/9YypIObAtDKfYEAjD35uVkHyB0F4DwrcNaCXlCWZKaArsGrY6M9wnuTMxWfp1RTN9Xga8no+kF5Vsb",
"AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4ZAC1J9dJuHPtWNca8rycgBrU2S0ClwfvXjrTr0BZSm54UFqMJpt2easxakffyhgWf/PrUrSLJHJg1cfJ/MAh/Wy",
)
}
@@ -643,7 +643,7 @@ func TestConversationKey001(t *testing.T) {
t,
"315e59ff51cb9209768cf7da80791ddcaae56ac9775eb25b6dee1234bc5d2268",
"c2f9d9948dc8c7c38321e4b85c8558872eafa0641cd269db76848a6073e69133",
"3dfef0ce2a4d80a25e7a328accf73448ef67096f65f79588e358d9a0eb9013f1",
"8bc1eda9f0bd37d986c4cda4872af3409d8efbf4ff93e6ab61c3cc035cc06365",
)
}
@@ -652,7 +652,7 @@ func TestConversationKey002(t *testing.T) {
t,
"a1e37752c9fdc1273be53f68c5f74be7c8905728e8de75800b94262f9497c86e",
"03bb7947065dde12ba991ea045132581d0954f042c84e06d8c00066e23c1a800",
"4d14f36e81b8452128da64fe6f1eae873baae2f444b02c950b90e43553f2178b",
"217cdcc158edaa9ebac91af882353ffc0372b450c135315c245e48ffa23efdf7",
)
}
@@ -661,7 +661,7 @@ func TestConversationKey003(t *testing.T) {
t,
"98a5902fd67518a0c900f0fb62158f278f94a21d6f9d33d30cd3091195500311",
"aae65c15f98e5e677b5050de82e3aba47a6fe49b3dab7863cf35d9478ba9f7d1",
"9c00b769d5f54d02bf175b7284a1cbd28b6911b06cda6666b2243561ac96bad7",
"17540957c96b901bd4d665ad7b33ac6144793c024f050ba460f975f1bf952b6e",
)
}
@@ -670,7 +670,7 @@ func TestConversationKey004(t *testing.T) {
t,
"86ae5ac8034eb2542ce23ec2f84375655dab7f836836bbd3c54cefe9fdc9c19f",
"59f90272378089d73f1339710c02e2be6db584e9cdbe86eed3578f0c67c23585",
"19f934aafd3324e8415299b64df42049afaa051c71c98d0aa10e1081f2e3e2ba",
"7c4af2456b151d0966b64e9e462bee907b92a3f6d253882556c254fc11c9140f",
)
}
@@ -679,7 +679,7 @@ func TestConversationKey005(t *testing.T) {
t,
"2528c287fe822421bc0dc4c3615878eb98e8a8c31657616d08b29c00ce209e34",
"f66ea16104c01a1c532e03f166c5370a22a5505753005a566366097150c6df60",
"c833bbb292956c43366145326d53b955ffb5da4e4998a2d853611841903f5442",
"652493c2472a24794907b8bdfb7dc8e56ea2022e607918ca6f9e170e9f1886bc",
)
}
@@ -688,7 +688,7 @@ func TestConversationKey006(t *testing.T) {
t,
"49808637b2d21129478041813aceb6f2c9d4929cd1303cdaf4fbdbd690905ff2",
"74d2aab13e97827ea21baf253ad7e39b974bb2498cc747cdb168582a11847b65",
"4bf304d3c8c4608864c0fe03890b90279328cd24a018ffa9eb8f8ccec06b505d",
"7f186c96ebdcb32e6ad374d33303f2d618aad43a8f965a3392ac3cb1d0e85110",
)
}
@@ -697,7 +697,7 @@ func TestConversationKey007(t *testing.T) {
t,
"af67c382106242c5baabf856efdc0629cc1c5b4061f85b8ceaba52aa7e4b4082",
"bdaf0001d63e7ec994fad736eab178ee3c2d7cfc925ae29f37d19224486db57b",
"a3a575dd66d45e9379904047ebfb9a7873c471687d0535db00ef2daa24b391db",
"8d4f18de53fdae5aa404547764429674f5075e589790947e248a1dcf4b867697",
)
}
@@ -706,7 +706,7 @@ func TestConversationKey008(t *testing.T) {
t,
"0e44e2d1db3c1717b05ffa0f08d102a09c554a1cbbf678ab158b259a44e682f1",
"1ffa76c5cc7a836af6914b840483726207cb750889753d7499fb8b76aa8fe0de",
"a39970a667b7f861f100e3827f4adbf6f464e2697686fe1a81aeda817d6b8bdf",
"2d90b6069def88c4fce31c28d3d9ec8328bc6893d1c5dd02235f403af7ea5540",
)
}
@@ -715,7 +715,7 @@ func TestConversationKey009(t *testing.T) {
t,
"5fc0070dbd0666dbddc21d788db04050b86ed8b456b080794c2a0c8e33287bb6",
"31990752f296dd22e146c9e6f152a269d84b241cc95bb3ff8ec341628a54caf0",
"72c21075f4b2349ce01a3e604e02a9ab9f07e35dd07eff746de348b4f3c6365e",
"8d02fe35ec3ff734de79a0da26fe38223232d2fa909e7a9438451d633f8395a1",
)
}
@@ -724,7 +724,7 @@ func TestConversationKey010(t *testing.T) {
t,
"1b7de0d64d9b12ddbb52ef217a3a7c47c4362ce7ea837d760dad58ab313cba64",
"24383541dd8083b93d144b431679d70ef4eec10c98fceef1eff08b1d81d4b065",
"dd152a76b44e63d1afd4dfff0785fa07b3e494a9e8401aba31ff925caeb8f5b1",
"e3efc88ea3b67f27602c5a0033bf57e1174eaed468d685ab6835629319a1f9f9",
)
}
@@ -733,7 +733,7 @@ func TestConversationKey011(t *testing.T) {
t,
"df2f560e213ca5fb33b9ecde771c7c0cbd30f1cf43c2c24de54480069d9ab0af",
"eeea26e552fc8b5e377acaa03e47daa2d7b0c787fac1e0774c9504d9094c430e",
"770519e803b80f411c34aef59c3ca018608842ebf53909c48d35250bd9323af6",
"77efc793bdaf6b7ea889353b68707530e615fa106d454001fd9013880576ab3f",
)
}
@@ -742,7 +742,7 @@ func TestConversationKey012(t *testing.T) {
t,
"cffff919fcc07b8003fdc63bc8a00c0f5dc81022c1c927c62c597352190d95b9",
"eb5c3cca1a968e26684e5b0eb733aecfc844f95a09ac4e126a9e58a4e4902f92",
"46a14ee7e80e439ec75c66f04ad824b53a632b8409a29bbb7c192e43c00bb795",
"248d4c8b660266a25b3e595fb51afc3f22e83db85b9ebcb8f56c4587a272701f",
)
}
@@ -751,7 +751,7 @@ func TestConversationKey013(t *testing.T) {
t,
"64ba5a685e443e881e9094647ddd32db14444bb21aa7986beeba3d1c4673ba0a",
"50e6a4339fac1f3bf86f2401dd797af43ad45bbf58e0801a7877a3984c77c3c4",
"968b9dbbfcede1664a4ca35a5d3379c064736e87aafbf0b5d114dff710b8a946",
"4fdb2226074f4cfa308fcd1a2fdf3c40e61d97b15d52d4306ae65c86cd21f25d",
)
}
@@ -760,7 +760,7 @@ func TestConversationKey014(t *testing.T) {
t,
"dd0c31ccce4ec8083f9b75dbf23cc2878e6d1b6baa17713841a2428f69dee91a",
"b483e84c1339812bed25be55cff959778dfc6edde97ccd9e3649f442472c091b",
"09024503c7bde07eb7865505891c1ea672bf2d9e25e18dd7a7cea6c69bf44b5d",
"9f865913b556656341ac1222d949d2471973f0c52af50034255489582a4421c1",
)
}
@@ -769,7 +769,7 @@ func TestConversationKey015(t *testing.T) {
t,
"af71313b0d95c41e968a172b33ba5ebd19d06cdf8a7a98df80ecf7af4f6f0358",
"2a5c25266695b461ee2af927a6c44a3c598b8095b0557e9bd7f787067435bc7c",
"fe5155b27c1c4b4e92a933edae23726a04802a7cc354a77ac273c85aa3c97a92",
"0a4be1d6c43298e93a7ca27b9f3e20b8a2a2ea9be31c8a542cf525cf85e10372",
)
}
@@ -778,7 +778,7 @@ func TestConversationKey016(t *testing.T) {
t,
"6636e8a389f75fe068a03b3edb3ea4a785e2768e3f73f48ffb1fc5e7cb7289dc",
"514eb2064224b6a5829ea21b6e8f7d3ea15ff8e70e8555010f649eb6e09aec70",
"ff7afacd4d1a6856d37ca5b546890e46e922b508639214991cf8048ddbe9745c",
"49d2c0088e89856b56566d5a4b492ac9e7c219c1019018bca65cb465c24d3631",
)
}
@@ -787,7 +787,7 @@ func TestConversationKey017(t *testing.T) {
t,
"94b212f02a3cfb8ad147d52941d3f1dbe1753804458e6645af92c7b2ea791caa",
"f0cac333231367a04b652a77ab4f8d658b94e86b5a8a0c472c5c7b0d4c6a40cc",
"e292eaf873addfed0a457c6bd16c8effde33d6664265697f69f420ab16f6669b",
"98cd935572ff535b68990f558638ba3399c19acaea4a783a167a349bad9c4872",
)
}
@@ -796,7 +796,7 @@ func TestConversationKey018(t *testing.T) {
t,
"aa61f9734e69ae88e5d4ced5aae881c96f0d7f16cca603d3bed9eec391136da6",
"4303e5360a884c360221de8606b72dd316da49a37fe51e17ada4f35f671620a6",
"8e7d44fd4767456df1fb61f134092a52fcd6836ebab3b00766e16732683ed848",
"49d2c0088e89856b56566d5a4b492ac9e7c219c1019018bca65cb465c24d3631",
)
}
@@ -805,7 +805,7 @@ func TestConversationKey019(t *testing.T) {
t,
"5e914bdac54f3f8e2cba94ee898b33240019297b69e96e70c8a495943a72fc98",
"5bd097924f606695c59f18ff8fd53c174adbafaaa71b3c0b4144a3e0a474b198",
"f5a0aecf2984bf923c8cd5e7bb8be262d1a8353cb93959434b943a07cf5644bc",
"d9aee5a1c3491352e9cba0b8d3887c9aeb6f4a6caae19811d507bb3ef47210b2d",
)
}
@@ -814,7 +814,7 @@ func TestConversationKey020(t *testing.T) {
t,
"8b275067add6312ddee064bcdbeb9d17e88aa1df36f430b2cea5cc0413d8278a",
"65bbbfca819c90c7579f7a82b750a18c858db1afbec8f35b3c1e0e7b5588e9b8",
"2c565e7027eb46038c2263563d7af681697107e975e9914b799d425effd248d6",
"469f0da3a3b53edbb0af1db5d3d595f39e42edb3d9c916618a50927d272bff71",
)
}
@@ -886,7 +886,7 @@ func TestConversationKey028(t *testing.T) {
t,
"261a076a9702af1647fb343c55b3f9a4f1096273002287df0015ba81ce5294df",
"b2777c863878893ae100fb740c8fab4bebd2bf7be78c761a75593670380a6112",
"76f8d2853de0734e51189ced523c09427c3e46338b9522cd6f74ef5e5b475c74",
"1f70de97fd7f605973b35b5ca64b2939ce5a039e70cab88c2a088bdeccc81bf8",
)
}
@@ -913,7 +913,7 @@ func TestConversationKey031(t *testing.T) {
t,
"63bffa986e382b0ac8ccc1aa93d18a7aa445116478be6f2453bad1f2d3af2344",
"b895c70a83e782c1cf84af558d1038e6b211c6f84ede60408f519a293201031d",
"3a3b8f00d4987fc6711d9be64d9c59cf9a709c6c6481c2cde404bcc7a28f174e",
"3445872a13f45a46ecd362c0e347cd32b3532b1b4cd35ec567ad4d4afe7a1665",
)
}
@@ -922,7 +922,7 @@ func TestConversationKey032(t *testing.T) {
t,
"e4a8bcacbf445fd3721792b939ff58e691cdcba6a8ba67ac3467b45567a03e5c",
"b54053189e8c9252c6950059c783edb10675d06d20c7b342f73ec9fa6ed39c9d",
"7b3933b4ef8189d347169c7955589fc1cfc01da5239591a08a183ff6694c44ad",
"d9aee5a1c3491352e9cba0b8d3887c9aeb6f4a6caae19811d507bb3ef47210b2d",
)
}
@@ -952,7 +952,7 @@ func TestConversationKey035(t *testing.T) {
t,
"0000000000000000000000000000000000000000000000000000000000000001",
"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
"3b4610cb7189beb9cc29eb3716ecc6102f1247e8f3101a03a1787d8908aeb54e",
"7b88c5403f9b6598e1dcad39aa052aadfd50f357c7dc498b93d928e518685737",
)
}
@@ -1378,4 +1378,4 @@ func assertCryptPub(
return
}
assert.Equal(t, decrypted, plaintextBytes, "wrong decryption")
}
}