From 7811d40ec7456793ca1839b99b05fd2b4f615af3 Mon Sep 17 00:00:00 2001 From: syntrust Date: Fri, 9 Oct 2026 14:57:41 +0800 Subject: [PATCH 1/3] fix: preserve canonical block header hashes --- .github/workflows/alerting.yml | 2 +- .github/workflows/golangci-build-test.yml | 2 +- .github/workflows/golangci-lint.yml | 2 +- .github/workflows/integration-test-l1.yml | 2 +- .github/workflows/integration-test.yml | 2 +- .github/workflows/publish.yml | 2 +- Dockerfile | 2 +- ethstorage/eth/block_info_test.go | 58 ++++ ethstorage/eth/testdata/sepolia-11700000.json | 231 ++++++++++++++++ ethstorage/eth/testdata/sepolia-11866124.json | 259 ++++++++++++++++++ ethstorage/miner/randao_test.go | 129 +++++++++ ethstorage/node/server.go | 2 +- ethstorage/pora/ethash/algorithm.go | 8 +- ethstorage/pora/ethash/algorithm_test.go | 41 +++ go.mod | 82 +++--- go.sum | 197 ++++++------- 16 files changed, 878 insertions(+), 143 deletions(-) create mode 100644 ethstorage/eth/block_info_test.go create mode 100644 ethstorage/eth/testdata/sepolia-11700000.json create mode 100644 ethstorage/eth/testdata/sepolia-11866124.json create mode 100644 ethstorage/miner/randao_test.go create mode 100644 ethstorage/pora/ethash/algorithm_test.go diff --git a/.github/workflows/alerting.yml b/.github/workflows/alerting.yml index 0389d1a9..dd20a4a2 100644 --- a/.github/workflows/alerting.yml +++ b/.github/workflows/alerting.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: '1.21' + go-version-file: go.mod - name: check run: | diff --git a/.github/workflows/golangci-build-test.yml b/.github/workflows/golangci-build-test.yml index 68e0b892..fd5bab99 100644 --- a/.github/workflows/golangci-build-test.yml +++ b/.github/workflows/golangci-build-test.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: '1.21' + go-version-file: go.mod - name: Build run: go build -v ./cmd/... diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 13ab5f09..3487c1db 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-go@v4 with: - go-version: '1.24' + go-version-file: go.mod cache: false - name: golangci-lint uses: golangci/golangci-lint-action@v3 diff --git a/.github/workflows/integration-test-l1.yml b/.github/workflows/integration-test-l1.yml index db9e5d89..404f3b98 100644 --- a/.github/workflows/integration-test-l1.yml +++ b/.github/workflows/integration-test-l1.yml @@ -20,7 +20,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: '1.22' + go-version-file: go.mod - name: Use Node.js uses: actions/setup-node@v3 diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 66eb151b..2a5b1ed7 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: '1.21' + go-version-file: go.mod - name: Use Node.js uses: actions/setup-node@v3 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d66ec63b..76f8cadc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -31,7 +31,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.24' + go-version-file: go.mod - name: Set up build environment if: matrix.os == 'ubuntu-latest' diff --git a/Dockerfile b/Dockerfile index a695b8ce..14005207 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build ES node in a stock Go builder container -FROM golang:1.24 as builder +FROM golang:1.25.14 as builder ADD . /es-node WORKDIR /es-node RUN make diff --git a/ethstorage/eth/block_info_test.go b/ethstorage/eth/block_info_test.go new file mode 100644 index 00000000..5b6ac807 --- /dev/null +++ b/ethstorage/eth/block_info_test.go @@ -0,0 +1,58 @@ +package eth + +import ( + "encoding/json" + "os" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/rlp" + "github.com/stretchr/testify/require" +) + +func TestInfoToL1BlockRefCanonicalHeader(t *testing.T) { + for _, tc := range []struct { + file string + fields int + }{ + {"testdata/sepolia-11700000.json", 21}, + {"testdata/sepolia-11866124.json", 23}, + } { + t.Run(tc.file, func(t *testing.T) { + data, err := os.ReadFile(tc.file) + require.NoError(t, err) + var response struct{ Result json.RawMessage } + require.NoError(t, json.Unmarshal(data, &response)) + var canonical struct { + Hash common.Hash + ParentHash common.Hash + Number hexutil.Uint64 + Timestamp hexutil.Uint64 + } + require.NoError(t, json.Unmarshal(response.Result, &canonical)) + var header types.Header + require.NoError(t, json.Unmarshal(response.Result, &header)) + + require.Equal(t, canonical.Hash, header.Hash()) + require.Equal(t, L1BlockRef{ + Hash: canonical.Hash, + Number: uint64(canonical.Number), + ParentHash: canonical.ParentHash, + Time: uint64(canonical.Timestamp), + }, InfoToL1BlockRef(&header)) + + encoded, err := (headerBlockInfo{&header}).HeaderRLP() + require.NoError(t, err) + require.Equal(t, canonical.Hash, crypto.Keccak256Hash(encoded)) + var fields []rlp.RawValue + require.NoError(t, rlp.DecodeBytes(encoded, &fields)) + require.Len(t, fields, tc.fields) + copied, err := (blockInfo{types.NewBlockWithHeader(&header)}).HeaderRLP() + require.NoError(t, err) + require.Equal(t, encoded, copied) + }) + } +} diff --git a/ethstorage/eth/testdata/sepolia-11700000.json b/ethstorage/eth/testdata/sepolia-11700000.json new file mode 100644 index 00000000..cda5c811 --- /dev/null +++ b/ethstorage/eth/testdata/sepolia-11700000.json @@ -0,0 +1,231 @@ +{ + "id": 1, + "jsonrpc": "2.0", + "result": { + "number": "0xb28720", + "hash": "0x76c55a4384716c7e2db081df94bb02e52ee373aa12b3adb9f354e4d1b79c4b1a", + "parentHash": "0xad83c69ae5b80e13f1bef1b893e0bb8a4c5a977edeccb9a44e6c33e2e89e7415", + "nonce": "0x0000000000000000", + "mixHash": "0x839726e4dc67fe0716cdafede4bdd39372f3013e223981e21329b6e4271966df", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x34b2400680000000c0488002a08c401c00351000c0c1041c002018b4e81e95585d88582440a0a2348802270118156028a0308000950004059c01824808a52d80da01008160a02a002a2024aed2888431204816c23894044248ea0057880054400a1010097a1900400e40108089100841380810881678280080024410c024220061c20e22101469080915005822100401400408412010402d8a040152102202000aa02304242145400254690048228408308618882804228cc1a4d2a2052a05104318c40b352c702e9501382c492208985a30030c040280380b020160e00068002611030b008f1802484010300801408440a0070618a8804b04c1d021480d2228", + "stateRoot": "0xc0bdcf729bf6d27fac57222ece97cf5386c602209e49ddd3f657e429e9f6cfe8", + "miner": "0x3826539cbd8d68dcf119e80b994557b4278cec9f", + "difficulty": "0x0", + "extraData": "0x626573752032362e372d646576656c6f702d34393032366161", + "gasLimit": "0x3938700", + "gasUsed": "0x393750c", + "timestamp": "0x6aa75c88", + "transactionsRoot": "0x1facdc1f0022c7e979676cb8b5783bfa003a0cd18a191f17e678192c7e85be43", + "receiptsRoot": "0xd8c138b106007d0ace76149178388d65c33743ac8c60877c62f140d1b9341ad5", + "baseFeePerGas": "0x38c48e6f", + "withdrawalsRoot": "0x128ee948a13262bdd2bff7858e0c743bc3adaf3195d74b203b5a66e21bc7da62", + "blobGasUsed": "0xc0000", + "excessBlobGas": "0xc7d9642", + "parentBeaconBlockRoot": "0xddf85de14a5d9be2ce6354e9830e73541a2d4ad91a87b1900b923d9b9c7f5a51", + "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "size": "0x7897", + "transactions": [ + "0xb08676e12547dfd20d568c36703b6a0afda139e30a6222b4cb28ca32c6c1ba8f", + "0x30c55ea36e56a73e0fc1a6c63bab9dd280f7e18c0f3e79cc6fdff05a9481c438", + "0x065807fc823863f9893cac79c11203f1838afde6e3ca9eeefcacc376b339c611", + "0x702c322c046266d3046be960bc520e4a26318aa6485541232785845dd4214678", + "0x6460210deb8d419136529a920de63fc448d671678be228bf753a20319209af55", + "0x955ed6bf11ca1215ec75f86143fe5f9ad62e63e3566ace4dabd4613a0dec0dba", + "0x8ee5eb1ebc73afdf29ef97dd2851b016b8cfda22981f8612ce2a98403b4ec06b", + "0x9220c2610d0772637192d53d725d32085df961282c5788a6c9139f761485c774", + "0xf48583821fd1ef6ca47c2d7c995e1ca05d00239a33c489e5ae8aadbee9046ab5", + "0xb6bf9209f0c7678c541d2fc20357e839285b01128f1da475b64c07658f5d6bbf", + "0x67b0414ba42d8fdb0990f1b5a04c0b67f0234eeb2a21b30c8efce82877dec905", + "0x1dd48c9ca3249ead58f32671aed112dbe5683a6c4523f3b2f864939f7c8ad2df", + "0x27be189bc03b44b846e2cccf0294c5f6dbfc3e5fb2b4e5a79b5ccb8f7994c60b", + "0x4b3af013cec7fa40ab66988be3dad4f6cf69558bb68c480acedfdf030cf63915", + "0x43735882068082c53d78ac6bf57bbcc4aa1857687f3d01177d1e557001229351", + "0x56bea2fc2edea9b839f08f15c01fdd7e3e17ecbfcd7bbe04458b1b802d41ac04", + "0xd628e54d74fd7ee809613fb45a89e7e4fd859b6377e38347bf90176e593602da", + "0x3b6df3ed8f9f92fc7b2db591ffff82647060286b6cf174f954fa95c6beb3be58", + "0xc28466119d70cc7b6499b25967e445068d0691518e982bbc8c3827026ba0cd4a", + "0x4f2c04729a9a78a45017c0bdb79ed1a5ccfc86491b9d4d44dc82c784ee620bca", + "0xca6e431f3b13fdfaf12be8dca062d35a392a1cb1a0bfeb7e432ede9efdb5aa6f", + "0x506ea917f9269afd16590f5ed0063d10585938a00470096cb16fbef9d37de614", + "0xa3b065ea0655e8c825de5226561d04e41773f163ddc62ff409636fdd04f4de47", + "0x0a0b2e0ba1db8137af06b3f43442c2240a5635999bce3223e9c72275aaf5b280", + "0xf951210071a5f905a5351499c277fa84d5ad1756777407d2398a6cb5058cc487", + "0xee0f723388203839a053fbe1c909bc3ae4ac25bca93fe50d736f19c49e3f93d1", + "0x7118c5dbb964f4c9cbe9edd6d8c8ffbfb21facbddd95cba0713162f7604d41e2", + "0x6f3424542e1b87e4de38f4e523f0ab500f459461df6ff10e454067b6c076673a", + "0x4f2600748c5cf8f4d669c90648c9050b6b20b3ac0d4d9261e73332dc892d12b9", + "0x4ba5157e4dc76cec0133239685eb86cc7623469640362a738fe144743122fd24", + "0x2a1ef859d1cd6480546caa09eabd7e3fbade71d3244b7c28f307b9c60b06d39b", + "0xe1f18301592d08222f074713da33109e5d1fa6d458d715470daf3736d79b7adc", + "0x8b7dcabda417f54c072225ac11bd8b5399dd5172fc9d6070b20e4a90271a5cb8", + "0xcbd5fa6ee9d2e1e139267bc41ca037d178e74ed068ad44866eec22a65bfa8359", + "0x0dd89fe6605d22d079e91e40073730a18ac9f4ae8ebee7b5f71c0bccccd0752f", + "0xf01c873afd9e6c2225311691878361728563ea2d11b2e03d8d56db70df4a40d8", + "0x16a0f19d3804cec64d3305439cd85e38bb56318d129da329ce63fbaf45795aa6", + "0xca418e177a35dc3489eeb46fb75ee44edfffaa97eefc0cf82e1079125de000b5", + "0x5cc3705ad2eee0bdcbf6cfb9060134fbf853d487cfa02c5601941a3bcae54805", + "0x56591c50cac9863420dd3049a714158ff92ada72b5c8c04a121a813077f13d85", + "0xd372d501a881ad7a88070b93c199b0c0fee8890333a4b29f3bfd4692c7738b0e", + "0x989f17dda9a1deec0d587ea5aa8aa620f6855601bbff1675c3cb4616fb3c574d", + "0x458ff696318a54c7d39e28bb53c5fa752ef7b0ee1f75a38dd01676c1057730df", + "0x1d8331308e1c3483d754afca899344b114eb254c00d1bde12c4ef2fd58824525", + "0x7baf3d3df1b75d30ce1fdf44b018fcf0f1ff704e28e502d37dd006fa58f24080", + "0x9366e788e7c327700828c660a504a7b108925bff81de7430de808563e0f107aa", + "0x367add312cf938b421140a14583b9221082c6c55d3f9aa01b92b2f99486f46d8", + "0x292faa8d032f077ae2d8f7c5a8d3d1c057b51fcf0bba445e9024296b2c1e012a", + "0x2f978e19de7f95f1bdd45bca5cbeaaa43b594fc5dbb961608d4a47ce55acf7c8", + "0x30ddf8cc061ca96ff4358d242f716ddb66e628d702f7af2c012263bf9f1cd816", + "0x528a312a345688dad7fb4fc0452db38ab67e86279e7e3617999585a15724ba89", + "0xca62700e7388cb5b8401fa8a6b662c8cfda8681ba3b0425b0fffbe6c31e2e96f", + "0x40e48dbf9dd29d78ad1c67d3d55d81ff8c0491dc84c2139636da3791020bc1ac", + "0xdb48546363299452aeda565960b3f29bde926840de58c074a4fe010ade29c944", + "0x5aea0cb87570d428929dcdf5259262ad0904cc5ec4bcba25d73b68e977668f04", + "0x86ce1dc11efca15aa769c8885154fdeb4dbd0fb5e1d5cc778eea6edd4585bf4a", + "0xaf049c4f4367e0c0a2f183918f86a55f588eb91783b5af2fcd99f5c03dd734e0", + "0x8711e5228d40c22d1b49e5b8fa51cfcfd4b513ce9ca136a4ff79659221bd0d11", + "0xc903779b81af9d888d10fd8cd6fda9708110144aa4dec18a91aff7f6dc7cbabc", + "0x7069aed339b9c2a237b10e6da4842817b0bdc5355849cc8bb1e639563d42cac3", + "0xaa5b7d96d6ad7370aecc3a68e9c156430aa28d53766418ae63c109085b2adab6", + "0xdf5fe90b9b9113a5de8145b7c3c4053191290cd64631c2a93512f9876758d3f5", + "0xad42813ef68b9e918b4b1290d1662aa4f3b7b4377f147a5680338e261b06e8cd", + "0x1312109039a5fd472fea958bd5a1a98b8b699ac80492d8158962497dd4a57128", + "0xfde8e7996d7063fb10edf8def657c907c593ef484b4ab14ffdbf27a4e329d25f", + "0x2a348a7917e83a55c48d069f6388b6b3bbaa976e052267c2f690037f62d7a690", + "0x85abef1c48c720482746898eaeee56c5319bbe427e3156735300471c585e8afb", + "0xf67eaaa16e098b2931d9f0918a3146f96bfed460ce471a0a386dfa2d1b6d6496", + "0x745a902987923f30a53c5338dbd7864733cd9ef608b65673647cd72e4230e524", + "0xf5ca63592181202042798a5e461293dc5585e19750ad399dea09d9dde0601f3b", + "0x8d2d9f92f54277dad24358a8c17b6daa3aa77e5c4888a17b3953be3abc537099", + "0x8a3dd346d5e1719158d59d873a1ff5673d71d081038d6b1dc78508306813f768", + "0x200ff9592f8a34982afc7b89137b10fc45e1e65c650604f2831012a72b135798", + "0x62dfdf7e97a028b457c575bdabdd0bce94321af450c776de16544009fc2f1679", + "0x61503114ad0bdc65322c076eeb2a53572447dc56edf036763d0b3ceb4f18014a", + "0x0f5f99a933d416ca994aa4a7fc8f826db268dd92d27b69647169ab38da40d58f", + "0x892f245d866d8ddbb34a3230f05738250425eb57a1c6f41a4be441073422aaef", + "0x69dbee0e73d3df86316a26e2c188cb52b75de5270e94502e934c08c2557021ad", + "0x3058cd2a05ad9daa0bc3dd65a74f720170c9f90199f948f58d5ed3796504e4eb", + "0xf27faf34fa90a5762d647e9b54aeefa8c5e5c34828a7b186d9c6c17fc871edca", + "0x275024c97f453fc8da31bf2de6a66230b388042817d20ea5f37e2d385189ac23", + "0x3819e757853fc4d15c18e64ed251abb228d60f5fed20a503ac49c620d86cd2c9", + "0xf3590f31d606b506df94afee97e9afdc4a2fe6490db1140c7bb3ae70dcfbb019", + "0x07b7040be242cdef292c962fe86fc6921b6370a907b5c8d24fc39dee53443c7d", + "0xe113f8061705f6722c19d4e0aba6272bc953400ee1bdce96321865504c4470f0", + "0x6efdf4551e19739f66702ee7411e3c24e74453db723cb2efd4cdaa0256a5fbd5", + "0x9a3c15d2d24a243bd3ae9e99917140e646cf1f3b92307b970d7ce7636e1f13cb", + "0x96c8c5a610b3a27cac9c3aa059e5bbfcd18a02ac300dc111008d9fadcd68da48", + "0xb3f02c96903a1d178e7c3210d8afa9db3099d530724e500d062be6d72848f1c8", + "0xe1907285017ba140149521517e1bfb08b17cc3b6b73974de231dcd35d7764d81", + "0xbb67390730fa4a43d16016a005c84632590c20778663bacff85af037b12150e6", + "0x2afe7bdc721fa54ae4218ca49866a49c9e61914a7d3548aa34370e68a1b5f138", + "0xd246d2389cc543c5613e44607cf6462b26663678971b306edc655ae8a89afe4d", + "0x9ece3a04ed7e2e2460b3c26945e154085666748a6f99a1ab4b552f695ee36cc5", + "0x1290343e44812c46ace69e55867cd7b1b97cc475a2d8c59e6afce3fac2b73564", + "0xc4dbb297909caeeb85093b6f11bac12e550a9df1613c572822e09d6b009fdc31", + "0xcfe242991643b12c5f395b0d3e6e006b6638212202efc31688cd470a4b79bd30", + "0xea7f8788eb2d8f47233f2beb5160b33ce3b7e1db057321fc1d0f25f1c32a297a", + "0xc9c3724b22726b4827165b9ea1ee5fe055125d77bdb73a62a1d3a6b4aa76b2fb", + "0x2d66fb5bd7b35acf63498d6f4c9c2ee865ced23459ff5ab487d5e9fdd1caa32b", + "0x68821162579dde7eef27d6757737887824cfdd5f2fdf86cf51ace3ae9636565a" + ], + "uncles": [], + "withdrawals": [ + { + "index": "0x84df199", + "validatorIndex": "0x55a", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df19a", + "validatorIndex": "0x55b", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df19b", + "validatorIndex": "0x55c", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df19c", + "validatorIndex": "0x55d", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df19d", + "validatorIndex": "0x55e", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df19e", + "validatorIndex": "0x55f", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df19f", + "validatorIndex": "0x560", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df1a0", + "validatorIndex": "0x561", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df1a1", + "validatorIndex": "0x562", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x1ea64b" + }, + { + "index": "0x84df1a2", + "validatorIndex": "0x563", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df1a3", + "validatorIndex": "0x564", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x1ee47e" + }, + { + "index": "0x84df1a4", + "validatorIndex": "0x565", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df1a5", + "validatorIndex": "0x566", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x38ea3" + }, + { + "index": "0x84df1a6", + "validatorIndex": "0x567", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + }, + { + "index": "0x84df1a7", + "validatorIndex": "0x568", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x3c4e5" + }, + { + "index": "0x84df1a8", + "validatorIndex": "0x569", + "address": "0x89bb1332db257b983ada216746903be808938da1", + "amount": "0x35861" + } + ] + } +} diff --git a/ethstorage/eth/testdata/sepolia-11866124.json b/ethstorage/eth/testdata/sepolia-11866124.json new file mode 100644 index 00000000..ecdf3a67 --- /dev/null +++ b/ethstorage/eth/testdata/sepolia-11866124.json @@ -0,0 +1,259 @@ +{ + "id": 1, + "jsonrpc": "2.0", + "result": { + "number": "0xb5100c", + "hash": "0xdeeb12fd776fc15563f3811c6e4c91a3aa25c93151fadecd90212c3dca139a6a", + "parentHash": "0xb048e4832491f0bf57d513393a7b633ece61b2dfce903d0b5a9b3f945ad34e33", + "nonce": "0x0000000000000000", + "mixHash": "0x41462843a19b3d2a162620df7d2c67af55d8750e547bc42facd60734279fd00b", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x74e280a04005155008502b8c930c1305980a010100c0028398408206008205c2018d00808906b022a209b12759a1246be20808015fbd30000e0208c84124280e9204bd13000036890004445c421804644247464a208581710800143e96f82108ca025810662802113840847210228c08164e124800ad05a11844f2742028200a88400447085eeb40988e084222864a1431a0a8030203922a0806d456009826211210e3002210280a05a20172a225480e0ab0163128c840008260080846b04262698e0192309a508904eb9662e0023ca35ad3a200984a2032401809494148615980100005018e092f8826524c2001c040322030000da2256080910f0620480222", + "stateRoot": "0x12529010364a6defe4f96cb6ea364620a8e6bf87b86a5dffee04595f43a36f37", + "miner": "0xa214fd87626b00349f457154382c6ec6a2659d1c", + "difficulty": "0x0", + "extraData": "0x", + "gasLimit": "0xbebc141", + "gasUsed": "0x42fb5be", + "timestamp": "0x6ac6ce9c", + "transactionsRoot": "0xc6e31bb8b853b7e89d02c45986a071db1f1ed44f3b3b6a289da729d74c23f526", + "receiptsRoot": "0xbc93aa1c755e4945cf201f32aa6a1b6969b93ac51cf418cbf6c74ba54b92409e", + "baseFeePerGas": "0xd", + "withdrawalsRoot": "0x4170f514b1a1b5c905f1c2bada714b84995435f395e15f0dcfb0bbf96231add2", + "blobGasUsed": "0x140000", + "excessBlobGas": "0x0", + "parentBeaconBlockRoot": "0x55c3e20e3eb5fe5a54f51a834245881cfb47036adc16a1eaf0c190c1abe7142e", + "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "blockAccessListHash": "0x40dd5e4bd0b671816e9ba70b82b66988a2314e4ea2c9b7f3671c2f0be215b373", + "slotNumber": "0xac86c5", + "size": "0xd6e2", + "transactions": [ + "0x49b5be6514729b611dececdf247e1b554c03e2e09288bf8c27cf4a1e5368d2c7", + "0x6b16cb2c5549289b66df7fd8e004609398d75a04a52404356d25fdd18c14cc4d", + "0xe694c10e218bb9be127ae046de25116502386072bbb56477e9a930d3f70ff50b", + "0xed1d2bfab45ad495324f5bd5c7a82bfb8b73860cc7c9ea140329dc42155cd58c", + "0x49ff9459eb996cba8e17026b83f34a0e2cef72cca3f4cb9889f134a89164fd4c", + "0xb7c8a1f5c545bec35c62b0082e9ff4a18678551e3c194781651bb89c92e53208", + "0x78975557f40419f9cd2b15e73371b83127a1febc0d884f71791c2f7793920a1d", + "0x6dbf97b0a7a23928bd605c78546191c1f461f3ea801a7be55dcb417b07315040", + "0x6e1399b82898480828aa50491a613080a51e7fcec0754666dde0df8265f48d76", + "0x487193d01dada57040b0e01678f4086cbeb88509418d1ecd3ae9f722e7c5f82c", + "0x1b58c7d77e804f9a98417f7c1e3199f2ee9c46ad5d09060a9796d8ea11bb4774", + "0x5711118f0af0ae9f32079bf23ddf27a8c4cf021189da8baefcb69daa1cce7026", + "0x133421d8b39b87bb388ceb5d63c3c993a5f03c3ba2374e7e478e488160fab60c", + "0x041662b407fa44f849eac4280dd817a180591c5a3816734485fb15f6b28f1ec4", + "0x43c0b65c1cfea1716b87fa7bb9f1b0a5b8e74d62b680cc8be02c4138cc7752db", + "0xc695befe4e4efc44533769fc1dd5739751136a10fba6ec74e3342eb0329178fa", + "0x6b0f5383003f8d7d83e5910fbd5b678d27db59e9adb6bcc103f31aa7cf19fe50", + "0x2f1ede8a1c4432d12a76917e7d000bfe1a61bbb6e938f84dcd0212cfe8c27ecd", + "0xb1cef24ff5e6fa83113fa6eda8da03129f67b1b0fce554edcf2cd73d40af7a95", + "0x2975036150fa84ab504b61ef53f5fe112a55b19ad584a348d163192185aeaff7", + "0xb87b1313e433a18065b626e8bf03213cc4ff961434d8f6c8eb4dc309b72edf2e", + "0xffc2fa29ef477d6c73610cdfc35cd7a9874e2568fcb3a0e53be5fa939f7e950f", + "0x5ea4b4a3b3d4de3eba0cff24bfbd66a803365eb96d54f47825747ad82628755c", + "0x0c7601399d23c53467f49f5d06a018e476cb7dce21459c4bda6a3596f09bbf02", + "0xa3349f781ead0020726cd772e82ad7aeec01989942042cb9370e8da76755f745", + "0x61ed9d848d848ba58a7c9205fe1c72aa9bc4342f1d47b9be4878f2f227ae20eb", + "0x70fbbbe50ef379a1ceca42730f644d84fb5a72b596cfc7e1aa12f4785ae92931", + "0x9c7a13ed1a52f3c2f041feb1ee767c93c38d7809f6fe1166d3d7502b6074e578", + "0x6497362f57822999668e53eb6cd50e079851fa0d8e566e6fa8462c2cf4ad3032", + "0x38fb07cd88c00f22a2576ac6972e6b3471de3e6e39586c4a9c174932cb71ca19", + "0x3768a61d1ec68a84ac22a91d281a8f8c4d88be2baf6eaac1c11e8aa9a83c7021", + "0x6db3638b572e4b2761a4bffe6deb6c51dda99c78c815b95185aaa7b661c937d3", + "0xd55b3b078900d8c15311eb0b0e458d5efb763f68772fb6281540d033ae412dd0", + "0x160e9c74ef8813df4d6036caa7589c08f57033d033563e3fc8475f919117fb57", + "0xff262ba00184aa1b4b1b39c072397f2b3b149e44d115c66f058b4a04d92a632d", + "0x0ce58574fb7577a7c7d8978d45413c05f14ab324673add8ca3b7576a4b10ba09", + "0x8d9ae36f6225f54aceb66cad2b2390dfdf2acbd4cb077b3215d5ccf240fc1db7", + "0x0c323d71185d6c97355dc611dff3be6351e0036ffd91ac1b9464a3c21dec24d7", + "0xc2681193b2ad3d7b18c74309c1f606c37d449aa0ddd47d7ec40d255e7682f39a", + "0x9d23f7b6aeecf6fa07bb0bca3ca69a27be54e874ef119821ef80516c124bc728", + "0x40d9023fc45b2762db26e78907dfed4d2adb1d2b2cd951e8246c88d4c8193e87", + "0x57d80e54aabe61cae62432ff2c59be0303b5482dc94b3e69cd57df9fd6c609d9", + "0x732f687ca7a8c81f0bb7a7530994204e16a3fdaea6ea160787ccd37edb04e440", + "0x7c77a9033b4954398dcfde4c97c80566f7ce9e83e0c2904d9e9d5e4b0d748d7c", + "0xebe05c7fb2e0ac60703418560f2e41fbada93cae0cbc6dbac60980892e37dbd1", + "0xcf4eba60ebf4cb7c268a45f5c1f1a5615e847d75c34d9ca0b1b9a98e9add15b4", + "0xe6224df87d76261525d88c10388afaa5a9a22c207b35e67013e3a279c9e7ec56", + "0x699930bbe155c8df2d125bb33bfc4ba4c462026c5ff17385f1a62de600780107", + "0xf9f127d4fc264e65bb28352306421ad41cc37ff6703ad4aaeb31fbbd23a7696d", + "0x42095094a8688729b98165aed90ace45bb289d7a9804fae0489651adff593f90", + "0x4de54f7ea184129e4097e203a43c5d6343f464521b1b74109ac1dfe5d1abdd10", + "0x86167fcb256d93a68424d3582fa29f353c43b5d0207932a8a5979f4cb7cafa5b", + "0xa7e203446606d43d05e1f1d555cf446bdad71fcc187ad70aa42dbc776ad71b8d", + "0xb7248acee08e7bb93152f68ed2c3e0a60c1f577baf9c556760aba0114bd61a74", + "0xa8b5ee9616be8fd448dff1a4a007c0ac5fdeb814257357842f49e86926889008", + "0x7dc645d4b52cff8a4cee34063b4be28095dfc64ae9e58d513a956b62ea545b8c", + "0x86051127c684f9061ff21bf11c80a193700e636034d430ab233193b47bec47ad", + "0x650a497c9daa35dc51cd38d5626300d84a493b7dd824b2c8ee6fd85e3d01059a", + "0xcb8768e8d46c374c4f4342c99ad1e833b66f23d5f2df0116b48ddfdb0711e7a2", + "0x73bb51c95dc99b4eba86c094c35abc401179b55f91e3a4419820944cc66ee247", + "0x2e5a4e9e3977b0d454ae92af3606d2bd8836b4337e05412648fd42552099fa21", + "0x156066b427126179053dbe74b1fc3140067f1eb1bdf3d9e8f90e297e74571d8b", + "0x8b373b47238d4cb861ac790b244343d8eb94a537e266eb66acf95c3fd0198e94", + "0xa433232f6208bb094a5142bbb554d1121e4bcb7e6ba63d27748195f7749bcee7", + "0xd980fceab1c4070cee3bf49e1a962eb773e10f6a4de8e13660d3b29a336e9417", + "0xaf74d1d2f632d7d893bf1fdfa7fea0a4339ae18a2044d16635f4eb20c950a6de", + "0xf78f2babcdd38aee42d1c0eeccb7e5df69e263982d14b7524ae50263d8f5ebdb", + "0x430640177ad0d7021808f46844cf6b49ba5e1f27b143767b195fc811fe207286", + "0x0cdc54187ee6cd5efea8a72670073eed1b7903a842da7041dcf140ab50c59a44", + "0xda06f5e65ef3ec813147e40f7de8a7e3d0a3a6538600d9d4d0a221807a78e637", + "0x654b4962f4ac51effb4264949dba91875b11930bedb922bfcb005abab5cff63c", + "0x09c6edaedc0909473c0d1590ed097094141c72f827a6b596f9e85ab50beb6721", + "0x2c1865d291d0f6dee3ae133136606638ab9da48340515363caef71a771c37157", + "0x4dacada58018cb68d9b5abd36e3207d2a33a4da80c26207ca73449145cc6eda3", + "0x29a450e66cbc88ce4538bb269fc1353d64dad278d7f2b6298e63741a35896571", + "0xed3edcf02519b0a7802d3763d8c1df3d4f5728aa46f0554f74176caafad3bea9", + "0x519eab6ff743e4bb331d2a426aa586197fb24d19eb8c1e20f3c23281f0da1a40", + "0x8a30482ad9ee6eb17f9d28122beb8f3ad346a53359aec4a750b2abe7fdedf156", + "0x0f422457946dacdd00c3ad461d6c4de10ce7d8747246446669bf7b94f5a132fd", + "0x2e455014766490b7fa7ebe639268d5407abe41e7d325c90e16e2a1cc514a05f3", + "0x5371aa35d147b2b45b67eecd38d49022ecc89c4dce26b98b67d2f7da5e6e81d6", + "0xf42461724248c667de31eb24e6441bfc2b59ddcfa3c35d6703f45447c55fa5ca", + "0x8003e299ca0d6e052e2aaf626110b8c5c1992b55b15a88b835e2abacf967dd67", + "0x5aad2b15ff0d71350eec216b5171e9318cd9dc1491c348df2269dd98bec3b2f3", + "0x8990f799b7808007d3f2bd927d68f8a68d529aae0d8cd68e4c4b0e88427001f7", + "0xf2120b8890ef98700770188f7105c67c7a801d5593241c3ffef53c9880e4fae3", + "0xc4e5513bfc18902211316e7d08c0e697621690288750715560e917aca19e0b8b", + "0xe7a22e5e3b2df80b9787d52aa9cbddb7de0d648f62161c45d2bed90666e39734", + "0x113368cb5674c2354ef2dd7f34e0af5e710b16b31fa611889db2ae80c8a26fed", + "0x16dd52894d9b840ee616c2c626b3fe1423a90eb0e1b20309fff39f8dba504235", + "0x04c46edd9db64f5d3753ac43b96d6585ed57364661d1ed2d43ef13876bb8d1c0", + "0x36830a32c8bec37b859d89d3302d07194e38a9b19eff27019ad584063e1329e9", + "0x90adf832e46944a451946349c79a284ae63c197581133f09446b3c805a54b838", + "0x0d022630cada1ceec037d2fec68533ce69f9a383b42a58fc23a95c11a33e1903", + "0x4b977a8950667cef9e68d334fd87e8103c41837c412fb63493caf5d628b5aaee", + "0x98fb39b39b78924e6cfd352e5ac5ff102ed0cae739c1023a64a45120db756b53", + "0xafc5db31c9d8285ac3b0ade7e83fdd25890b32211091d49083136fb01bf46636", + "0xcdb6b4b15c1365222e252215016d82082da272640a444889a521d7612c3e2f0b", + "0x24ad3f63c44eab7d18047b22387ed4b948d86ae94e7b46bd7b82302ae4ebe028", + "0xd5c7ca3d0467ff4883151bdacac871c65fd94bf5fa1d8f65d8c576843b5d0c3b", + "0xa41111253a1e9880aa0726f2b37e49b8bbef6108894e28dcd60122a930494c69", + "0x7f62a08395af70b809210c3082ae9356685c3341a94994711989b603a4e99661", + "0x7e88dc9663d8600a77e743d4fe363822674b4fa34b9b65fd662f8c4954c8202a", + "0x9bb3d165a26de458de0d0f2c35d4509114ca0e980b13d28a243a1e3d3de72544", + "0x0742c60a3d9bfd9839b85f07dab54118444c84cb37f1970c17ab39d32eceb3c6", + "0x62399ba659bb033b72cfd3a0ddc08ed3dfe8b4d2d9d8fac065d7061bfaec817d", + "0xe43b79270690a3d05b53fea5ac29a79a5be58f763ec6c1b7a34fd6d9acb7e278", + "0x56a1b776a25b33b99909e6b0c3c730319860d6b7c6f840c9b4dbfb537d99888a", + "0x6526eb141c266e3c144a4c8c1d3851ab077e5f3a9fc91166f4b2ca016765ea8a", + "0x89ba627551969c3591a476e1d4ba350bd2c67aebcb700d326000e917923adc32", + "0x7b5960291a7eaff70cfe75979d0a8368edb04b9fb21212e338df28d1d88808b9", + "0x2447d68ce39c2b9f3e387d3a47f0efa24a86ad1c53199d0994260a965cd78246", + "0xe4253e88d101f522aacf7096463f44658b415ede4241c99dc664ea7640d52f29", + "0x33254a580c0fb67ddca6ec77a7a8f07cf60771c1dea5ff1b0f2598f7e0b28ca1", + "0xc9c88887078cd5814d5b8d8ddc9b81a069231b78d6f8c817790def2b18ac9a12", + "0xdfe81887859d0621f32fb21a70ef7a10a60c20a07789845125d7458b893c1e32", + "0x749b3cefd1c587184149df6b0c5bcfb0b6babede9174706a49a2e9a0cf99133b", + "0xb7cd1f3adee2a39f718f8342ea4e1522716a9fa8cb112669dcb7762ab0458c1a", + "0x24b093eceee44cf462563868de988542e7a762a24de5bcdf9ff2b60bdcb246b2", + "0x89153fbd5cc45b192f0c0bdd29155eaadbf1b43bb031248e8c1b265838643e67", + "0xf64b55da31d8e2e6ec202f77a308ae90bc5bc2be6b92b256a7306fc4fad211a8", + "0x3bc9c16d3b7382001ed7eaa5ff25bb40e69ccd204c8198b664ee4ce85def5eb2", + "0x1ec713815fc60e4c1e35645b070fe9e5a741992579b64142dfd99c611ca7884e", + "0xd909fb9b6eaaae142bcf6e4cf21a697cb251dfd9d21c7aeaa1b561f8a117969b", + "0xb34e303faac04a6f421b242a02c14607fa07b3f3914066f7da72417da848d59c", + "0xa58a681b1099b4f4d52428f50a1b93a5963a25ee1ab020ee44d9c8ac13f8b56d", + "0x7bc3c547f5022ef7382568ad768198aa76d1a85fb4fbd7454af6d17b432af886" + ], + "uncles": [], + "withdrawals": [ + { + "index": "0x8768059", + "validatorIndex": "0x38f", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x876805a", + "validatorIndex": "0x390", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x876805b", + "validatorIndex": "0x391", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x876805c", + "validatorIndex": "0x392", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x876805d", + "validatorIndex": "0x393", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x386be" + }, + { + "index": "0x876805e", + "validatorIndex": "0x394", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x876805f", + "validatorIndex": "0x395", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x386be" + }, + { + "index": "0x8768060", + "validatorIndex": "0x396", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x8768061", + "validatorIndex": "0x397", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x8768062", + "validatorIndex": "0x398", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x8768063", + "validatorIndex": "0x399", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x386be" + }, + { + "index": "0x8768064", + "validatorIndex": "0x39a", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x8768065", + "validatorIndex": "0x39b", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x386be" + }, + { + "index": "0x8768066", + "validatorIndex": "0x39c", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x8768067", + "validatorIndex": "0x39d", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + }, + { + "index": "0x8768068", + "validatorIndex": "0x39e", + "address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e", + "amount": "0x361ac" + } + ] + } +} diff --git a/ethstorage/miner/randao_test.go b/ethstorage/miner/randao_test.go new file mode 100644 index 00000000..14f0d341 --- /dev/null +++ b/ethstorage/miner/randao_test.go @@ -0,0 +1,129 @@ +package miner + +import ( + "encoding/json" + "math/big" + "net/http" + "net/http/httptest" + "os" + "sync/atomic" + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/ethereum/go-ethereum/rlp" + "github.com/ethstorage/go-ethstorage/ethstorage/eth" + "github.com/ethstorage/go-ethstorage/ethstorage/log" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func loadRandaoBlock(t *testing.T, file string) (json.RawMessage, common.Hash, *big.Int) { + t.Helper() + data, err := os.ReadFile("../eth/testdata/" + file) + require.NoError(t, err) + var response struct{ Result json.RawMessage } + require.NoError(t, json.Unmarshal(data, &response)) + var canonical struct { + Hash common.Hash + Number hexutil.Big + } + require.NoError(t, json.Unmarshal(response.Result, &canonical)) + return response.Result, canonical.Hash, (*big.Int)(&canonical.Number) +} + +func randaoHeaderClient(t *testing.T, block json.RawMessage, calls *atomic.Uint32) *ethclient.Client { + t.Helper() + var canonical struct{ Number hexutil.Uint64 } + require.NoError(t, json.Unmarshal(block, &canonical)) + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var request struct { + ID json.RawMessage + Method string + Params json.RawMessage + } + if !assert.NoError(t, json.NewDecoder(r.Body).Decode(&request)) { + w.WriteHeader(http.StatusBadRequest) + return + } + var result interface{} + switch request.Method { + case "net_version": + result = "11155111" + case "eth_getBlockByNumber": + calls.Add(1) + assert.JSONEq(t, `["`+hexutil.EncodeUint64(uint64(canonical.Number))+`",false]`, string(request.Params)) + result = block + default: + t.Errorf("unexpected RPC method: %s", request.Method) + w.WriteHeader(http.StatusBadRequest) + return + } + w.Header().Set("Content-Type", "application/json") + assert.NoError(t, json.NewEncoder(w).Encode(map[string]interface{}{ + "jsonrpc": "2.0", "id": request.ID, "result": result, + })) + })) + t.Cleanup(server.Close) + client, err := ethclient.DialContext(t.Context(), server.URL) + require.NoError(t, err) + t.Cleanup(client.Close) + return client +} + +func TestGetRandaoProofCanonicalHeader(t *testing.T) { + files := []string{"sepolia-11700000.json", "sepolia-11866124.json"} + for i, file := range files { + for _, source := range []string{"default", "independent"} { + t.Run(file+"/"+source, func(t *testing.T) { + block, canonicalHash, number := loadRandaoBlock(t, file) + primaryBlock := block + if source == "independent" { + primaryBlock, _, _ = loadRandaoBlock(t, files[1-i]) + } + var primaryCalls, randaoCalls atomic.Uint32 + primary := randaoHeaderClient(t, primaryBlock, &primaryCalls) + logger := log.DefaultLogger() + polling := eth.NewClient(t.Context(), primary, false, common.Address{}, 0, nil, logger) + var randao *eth.RandaoClient + if source == "independent" { + client := randaoHeaderClient(t, block, &randaoCalls) + randao = eth.NewRandaoClient(t.Context(), polling, client) + } + mining := NewL1MiningAPI(polling, randao, logger) + proof, err := mining.getRandaoProof(t.Context(), number) + require.NoError(t, err) + require.Equal(t, canonicalHash, crypto.Keccak256Hash(proof)) + var header types.Header + require.NoError(t, rlp.DecodeBytes(proof, &header)) + require.Equal(t, number, header.Number) + + calldata, err := mining.composeCalldata(t.Context(), result{ + blockNumber: number, + miner: common.HexToAddress("0x1234"), + }) + require.NoError(t, err) + var arguments abi.Arguments + for _, name := range []string{"uint256", "uint256", "address", "uint256", "bytes32[]", "uint256[]", "bytes", "bytes[]", "bytes[]"} { + typ, err := abi.NewType(name, "", nil) + require.NoError(t, err) + arguments = append(arguments, abi.Argument{Type: typ}) + } + values, err := arguments.Unpack(calldata[4:]) + require.NoError(t, err) + require.Equal(t, number, values[0]) + require.Equal(t, proof, values[6]) + if source == "independent" { + require.Zero(t, primaryCalls.Load()) + require.Equal(t, uint32(2), randaoCalls.Load()) + } else { + require.Equal(t, uint32(2), primaryCalls.Load()) + } + }) + } + } +} diff --git a/ethstorage/node/server.go b/ethstorage/node/server.go index c00c3a01..c6b8a5bf 100644 --- a/ethstorage/node/server.go +++ b/ethstorage/node/server.go @@ -71,7 +71,7 @@ func (s *rpcServer) Start() error { // other services to connect to the node. VHosts in particular // defaults to localhost, which will prevent containers from // calling into the node without an "invalid host" error. - nodeHandler := node.NewHTTPHandlerStack(srv, []string{"*"}, []string{"*"}, nil) + nodeHandler := node.NewHTTPHandlerStack(srv, []string{"*"}, []string{"*"}, nil, false) mux := http.NewServeMux() mux.Handle("/", nodeHandler) diff --git a/ethstorage/pora/ethash/algorithm.go b/ethstorage/pora/ethash/algorithm.go index 4144bf5e..0d8b7191 100644 --- a/ethstorage/pora/ethash/algorithm.go +++ b/ethstorage/pora/ethash/algorithm.go @@ -352,7 +352,9 @@ func hashimoto(hash []byte, nonce uint64, size uint64, lookup func(index uint32) copy(seed, hash) binary.LittleEndian.PutUint64(seed[32:], nonce) - seed = crypto.Keccak512(seed) + seedHash := make([]byte, hashBytes) + makeHasher(sha3.NewLegacyKeccak512())(seedHash, seed) + seed = seedHash seedHead := binary.LittleEndian.Uint32(seed) // Start the mix with replicated seed @@ -387,7 +389,9 @@ func HashimotoForMask(seed []byte, size uint64, lookup func(index uint32) []uint // Calculate the number of theoretical rows (we use one buffer nonetheless) rows := uint32(size / mixBytes) - seed = crypto.Keccak512(seed) + seedHash := make([]byte, hashBytes) + makeHasher(sha3.NewLegacyKeccak512())(seedHash, seed) + seed = seedHash seedHead := binary.LittleEndian.Uint32(seed) // Start the mix with replicated seed diff --git a/ethstorage/pora/ethash/algorithm_test.go b/ethstorage/pora/ethash/algorithm_test.go new file mode 100644 index 00000000..d8e82314 --- /dev/null +++ b/ethstorage/pora/ethash/algorithm_test.go @@ -0,0 +1,41 @@ +package pora + +import ( + "testing" + + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/stretchr/testify/require" +) + +func TestHashimotoKeccak512Compatibility(t *testing.T) { + // Canonical vector from go-ethereum v1.10.26 consensus/ethash/algorithm_test.go. + cache := make([]uint32, 1024/4) + generateCache(cache, 0, make([]byte, 32)) + dataset := make([]uint32, 32*1024/4) + generateDataset(dataset, 0, cache) + hash := hexutil.MustDecode("0xc9149cc0386e689d789a1c2f3d5d169a61a6218ed30e74414dc736e442ef3d1f") + wantDigest := hexutil.MustDecode("0xe4073cffaef931d37117cefd9afd27ea0f1cad6a981dd2605c4a1ac97c519800") + wantResult := hexutil.MustDecode("0xd3539235ee2e6f8db665c0a72169f55b7f6c605712330b778ec3944f0eb5a557") + digest, result := hashimotoLight(32*1024, cache, hash, 0) + require.Equal(t, wantDigest, digest) + require.Equal(t, wantResult, result) + digest, result = hashimotoFull(dataset, hash, 0) + require.Equal(t, wantDigest, digest) + require.Equal(t, wantResult, result) +} + +func TestHashimotoForMaskKeccak512Compatibility(t *testing.T) { + // Golden mask generated with the original implementation and go-ethereum v1.16.5. + want := hexutil.MustDecode("0xd62b97181c47e017f78c0ef5695aec3d1d56d9895ba9c2ee139e01e4b740823f2" + + "81d0b2f4a0c9e3522c86427b9df766b3df67c2602e0d143eff9d7e6741c9a85d" + + "699e8af1c6ce8c0f7402ce7e97fbd881d320e5edb5294a113a2715337c7e0d9" + + "28efe46a4ab14afc22a862ec39ee853b3d220a6c02f2e418effb2d7e74d8576a") + mask := HashimotoForMask([]byte("EthStorage Keccak512 compatibility"), 32*1024, func(index uint32) []uint32 { + data := make([]uint32, hashWords) + for i := range data { + data[i] = index*hashWords + uint32(i) + } + return data + }) + require.Equal(t, want, mask) +} diff --git a/go.mod b/go.mod index 9db2b839..d69f5296 100644 --- a/go.mod +++ b/go.mod @@ -1,19 +1,17 @@ module github.com/ethstorage/go-ethstorage -go 1.24.0 - -toolchain go1.24.9 +go 1.25.14 require ( - github.com/consensys/gnark-crypto v0.18.0 + github.com/consensys/gnark-crypto v0.18.1 github.com/crate-crypto/go-kzg-4844 v1.1.0 github.com/detailyang/go-fallocate v0.0.0-20180908115635-432fa640bd2e github.com/edsrzf/mmap-go v1.1.0 github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 github.com/ethereum-optimism/optimism v1.2.0 - github.com/ethereum/go-ethereum v1.16.5 + github.com/ethereum/go-ethereum v1.17.7 github.com/ethstorage/billy v0.0.0-20240730021803-ca24378685e7 - github.com/golang/snappy v1.0.0 + github.com/golang/snappy v1.0.1-0.20260716114414-9ae09f520e93 github.com/gorilla/mux v1.8.1 github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d github.com/holiman/uint256 v1.3.2 @@ -28,37 +26,45 @@ require ( github.com/protolambda/go-kzg v0.0.0-20221224134646-c91cee5e954e github.com/spf13/cobra v1.8.1 github.com/status-im/keycard-go v0.2.0 - github.com/stretchr/testify v1.10.0 + github.com/stretchr/testify v1.12.1 github.com/urfave/cli v1.22.9 - golang.org/x/crypto v0.36.0 - golang.org/x/sys v0.36.0 - golang.org/x/time v0.9.0 + golang.org/x/crypto v0.55.0 + golang.org/x/sys v0.47.0 + golang.org/x/time v0.10.0 ) require ( github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect + github.com/RaduBerinde/axisds v0.1.0 // indirect + github.com/RaduBerinde/btreemap v0.0.0-20250419174037-3d62b7205d54 // indirect github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/btcsuite/btcd v0.23.3 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/btcutil v1.1.0 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect + github.com/cockroachdb/crlib v0.0.0-20241112164430-1264a2edc35b // indirect github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/pebble v1.1.5 // indirect + github.com/cockroachdb/pebble/v2 v2.1.4 // indirect + github.com/cockroachdb/swiss v0.0.0-20260820225851-333444432258 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect - github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/emicklei/dot v1.6.2 // indirect - github.com/ethereum/c-kzg-4844/v2 v2.1.3 // indirect - github.com/ethereum/go-verkle v0.2.2 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.8 // indirect github.com/ferranbt/fastssz v0.1.4 // indirect + github.com/fjl/jsonw v0.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/go-logr/logr v1.4.4 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect + github.com/grafana/pyroscope-go v1.2.7 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-bexpr v0.1.11 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect @@ -66,33 +72,38 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect github.com/kilic/bls12-381 v0.1.1-0.20220929213557-ca162e8a70f4 // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pion/dtls/v2 v2.2.7 // indirect - github.com/pion/logging v0.2.2 // indirect - github.com/pion/stun/v2 v2.0.0 // indirect - github.com/pion/transport/v2 v2.2.1 // indirect - github.com/pion/transport/v3 v3.0.1 // indirect - github.com/rivo/uniseg v0.4.3 // indirect + github.com/minio/minlz v1.0.1-0.20250507153514-87eb42fe8882 // indirect + github.com/pion/dtls/v3 v3.1.2 // indirect + github.com/pion/logging v0.2.4 // indirect + github.com/pion/stun/v3 v3.1.2 // indirect + github.com/pion/transport/v4 v4.0.1 // indirect github.com/rs/cors v1.9.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect - github.com/stretchr/objx v0.5.2 // indirect - github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe // indirect + github.com/stretchr/objx v0.5.3 // indirect + github.com/supranational/blst v0.3.16 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect github.com/tetratelabs/wazero v1.8.0 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect github.com/urfave/cli/v2 v2.27.5 // indirect + github.com/wlynxg/anet v0.0.5 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/otel v1.46.0 // indirect + go.opentelemetry.io/otel/metric v1.46.0 // indirect + go.opentelemetry.io/otel/trace v1.46.0 // indirect go.uber.org/mock v0.3.0 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect - golang.org/x/sync v0.12.0 // indirect - golang.org/x/text v0.23.0 // indirect - golang.org/x/tools v0.29.0 // indirect + golang.org/x/sync v0.22.0 // indirect + golang.org/x/telemetry v0.0.0-20260811182544-a038080d80e5 // indirect + golang.org/x/text v0.41.0 // indirect + golang.org/x/tools v0.49.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) require ( - github.com/DataDog/zstd v1.5.2 // indirect + github.com/DataDog/zstd v1.5.7 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -125,7 +136,7 @@ require ( github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jbenet/goprocess v0.1.4 // indirect - github.com/klauspost/compress v1.17.2 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/koron/go-ssdp v0.0.4 // indirect github.com/kr/pretty v0.3.1 // indirect @@ -140,7 +151,6 @@ require ( github.com/libp2p/go-reuseport v0.4.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.1 github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/miekg/dns v1.1.56 // indirect github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect @@ -163,7 +173,6 @@ require ( github.com/opencontainers/runtime-spec v1.1.0 // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pkg/errors v0.9.1 - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.17.0 github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect github.com/prometheus/common v0.44.0 // indirect @@ -173,7 +182,7 @@ require ( github.com/quic-go/quic-go v0.39.3 // indirect github.com/quic-go/webtransport-go v0.6.0 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/pflag v1.0.6 // indirect @@ -184,10 +193,9 @@ require ( go.uber.org/fx v1.20.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect - golang.org/x/mod v0.22.0 - golang.org/x/net v0.38.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + golang.org/x/mod v0.39.0 + golang.org/x/net v0.58.0 // indirect + google.golang.org/protobuf v1.36.12 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/go.sum b/go.sum index 6cb848da..6860bff8 100644 --- a/go.sum +++ b/go.sum @@ -10,12 +10,20 @@ git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGy github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= +github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= +github.com/RaduBerinde/axisds v0.1.0 h1:YItk/RmU5nvlsv/awo2Fjx97Mfpt4JfgtEVAGPrLdz8= +github.com/RaduBerinde/axisds v0.1.0/go.mod h1:UHGJonU9z4YYGKJxSaC6/TNcLOBptpmM5m2Cksbnw0Y= +github.com/RaduBerinde/btreemap v0.0.0-20250419174037-3d62b7205d54 h1:bsU8Tzxr/PNz75ayvCnxKZWEYdLMPDkUgticP4a4Bvk= +github.com/RaduBerinde/btreemap v0.0.0-20250419174037-3d62b7205d54/go.mod h1:0tr7FllbE9gJkHq7CVeeDDFAFKQVy5RnCSSNBOvdqbc= github.com/VictoriaMetrics/fastcache v1.13.0 h1:AW4mheMR5Vd9FkAPUv+NH6Nhw+fmbTMGMsNAoA/+4G0= github.com/VictoriaMetrics/fastcache v1.13.0/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU= +github.com/aclements/go-perfevent v0.0.0-20240301234650-f7843625020f h1:JjxwchlOepwsUWcQwD2mLUAGE9aCp0/ehy6yCHFBOvo= +github.com/aclements/go-perfevent v0.0.0-20240301234650-f7843625020f/go.mod h1:tMDTce/yLLN/SK8gMOxQfnyeMeCg8KGzp0D1cbECEeo= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -61,22 +69,30 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= -github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/crlib v0.0.0-20241112164430-1264a2edc35b h1:SHlYZ/bMx7frnmeqCu+xm0TCxXLzX3jQIVuFbnFGtFU= +github.com/cockroachdb/crlib v0.0.0-20241112164430-1264a2edc35b/go.mod h1:Gq51ZeKaFCXk6QwuGM0w1dnaOqc/F5zKT2zA9D6Xeac= +github.com/cockroachdb/datadriven v1.0.3-0.20250407164829-2945557346d5 h1:UycK/E0TkisVrQbSoxvU827FwgBBcZ95nRRmpj/12QI= +github.com/cockroachdb/datadriven v1.0.3-0.20250407164829-2945557346d5/go.mod h1:jsaKMvD3RBCATk1/jbUZM8C9idWBJME9+VRZ5+Liq1g= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/metamorphic v0.0.0-20231108215700-4ba948b56895 h1:XANOgPYtvELQ/h4IrmPAohXqe2pWA8Bwhejr3VQoZsA= +github.com/cockroachdb/metamorphic v0.0.0-20231108215700-4ba948b56895/go.mod h1:aPd7gM9ov9M8v32Yy5NJrDyOcD8z642dqs+F0CeNXfA= github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= +github.com/cockroachdb/pebble/v2 v2.1.4 h1:j9wPgMDbkErFdAKYFGhsoCcvzcjR+6zrJ4jhKtJ6bOk= +github.com/cockroachdb/pebble/v2 v2.1.4/go.mod h1:Reo1RTniv1UjVTAu/Fv74y5i3kJ5gmVrPhO9UtFiKn8= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/swiss v0.0.0-20260820225851-333444432258 h1:IJ+uNItEm0qx9FE2AgIc1PMsCUtk8nbSIzhQE1t5GWw= +github.com/cockroachdb/swiss v0.0.0-20260820225851-333444432258/go.mod h1:yBRu/cnL4ks9bgy4vAASdjIW+/xMlFwuHKqtmh3GZQg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/consensys/gnark-crypto v0.18.0 h1:vIye/FqI50VeAr0B3dx+YjeIvmc3LWz4yEfbWBpTUf0= -github.com/consensys/gnark-crypto v0.18.0/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= +github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI= +github.com/consensys/gnark-crypto v0.18.1/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= @@ -89,10 +105,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-eth-kzg v1.4.0 h1:WzDGjHk4gFg6YzV0rJOAsTK4z3Qkz5jd4RE3DAvPFkg= -github.com/crate-crypto/go-eth-kzg v1.4.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= -github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= -github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= +github.com/crate-crypto/go-eth-kzg v1.5.0 h1:FYRiJMJG2iv+2Dy3fi14SVGjcPteZ5HAAUe4YWlJygc= +github.com/crate-crypto/go-eth-kzg v1.5.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4= github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -137,20 +151,20 @@ github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3 h1:RWHKLhCrQThMfch+QJ1Z github.com/ethereum-optimism/go-ethereum-hdwallet v0.1.3/go.mod h1:QziizLAiF0KqyLdNJYD7O5cpDlaFMNZzlxYNcWsJUxs= github.com/ethereum-optimism/optimism v1.2.0 h1:wlVqKHj6+HCMrXRskLM7b45zcdqSHCsVk0Kmg+ViCS8= github.com/ethereum-optimism/optimism v1.2.0/go.mod h1:y1J1a0BkbJ5MTImx1Ayk2syTXZEoFucRAsBpdzbn0Qk= -github.com/ethereum/c-kzg-4844/v2 v2.1.3 h1:DQ21UU0VSsuGy8+pcMJHDS0CV1bKmJmxsJYK8l3MiLU= -github.com/ethereum/c-kzg-4844/v2 v2.1.3/go.mod h1:fyNcYI/yAuLWJxf4uzVtS8VDKeoAaRM8G/+ADz/pRdA= +github.com/ethereum/c-kzg-4844/v2 v2.1.8 h1:oQ48q/TMe2SKU8qBE3N7e4/HlG3EpJftom6EsPQgJ58= +github.com/ethereum/c-kzg-4844/v2 v2.1.8/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk= github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8= -github.com/ethereum/go-ethereum v1.16.5 h1:GZI995PZkzP7ySCxEFaOPzS8+bd8NldE//1qvQDQpe0= -github.com/ethereum/go-ethereum v1.16.5/go.mod h1:kId9vOtlYg3PZk9VwKbGlQmSACB5ESPTBGT+M9zjmok= -github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= -github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/ethereum/go-ethereum v1.17.7 h1:jhoGxw/5aYPYUwEIfzfog0RcsiJuLA6SSqsHdhkx1tA= +github.com/ethereum/go-ethereum v1.17.7/go.mod h1:nl9wZjMuIjAottU6bq82UihXPbyY0jHHwkYXhnYhmU4= github.com/ethstorage/billy v0.0.0-20240730021803-ca24378685e7 h1:wOhbhs4WO8Mf0LT9c2qRxUbspAU9Tg4olLiastQTO5A= github.com/ethstorage/billy v0.0.0-20240730021803-ca24378685e7/go.mod h1:y+M5PibhfdCZkQbwwFRIRIgGVc1txfqc3qvBeoQGoGw= github.com/ethstorage/go-iden3-crypto v0.0.0-20230406080944-d89aec086425 h1:dKQu1oXrt6ndFl4XtAZsfBubU8c5W59T85L8MGtWawE= github.com/ethstorage/go-iden3-crypto v0.0.0-20230406080944-d89aec086425/go.mod h1:dLpM4vEPJ3nDHzhWFXDjzkn1qHoBeOT/3UEhXsEsP3E= github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeDY= github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= +github.com/fjl/jsonw v0.1.0 h1:V3MyR79fjLpn/+bMgvegdGUIhoJOzjmqWcKDgcOmY1I= +github.com/fjl/jsonw v0.1.0/go.mod h1:2KMLevM6FXEJnfhtk7naXu9vZdVfOma1GlnGdPRlumU= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= @@ -165,13 +179,18 @@ github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8x github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9 h1:r5GgOLGbza2wVHRzK7aAj6lWZjfbAwiu/RDCVOKjRyM= +github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= +github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= @@ -208,8 +227,8 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= -github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v1.0.1-0.20260716114414-9ae09f520e93 h1:GpQQr4L8jsBtJSURCDqQboOdgpVMU6vR9REjc8nR4Qc= +github.com/golang/snappy v1.0.1-0.20260716114414-9ae09f520e93/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -217,8 +236,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 h1:Ep/joEub9YwcjRY6ND3+Y/w0ncE540RtGatVhtZL0/Q= @@ -232,8 +251,8 @@ github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVe github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -241,6 +260,10 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grafana/pyroscope-go v1.2.7 h1:VWBBlqxjyR0Cwk2W6UrE8CdcdD80GOFNutj0Kb1T8ac= +github.com/grafana/pyroscope-go v1.2.7/go.mod h1:o/bpSLiJYYP6HQtvcoVKiE9s5RiNgjYTj1DhiddP2Pc= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9 h1:c1Us8i6eSmkW+Ez05d3co8kasnuOY813tbMN8i/a3Og= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY41SORZyNJ0= github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= @@ -319,8 +342,8 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4= -github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= @@ -373,7 +396,6 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= @@ -390,6 +412,8 @@ github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKo github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/minlz v1.0.1-0.20250507153514-87eb42fe8882 h1:0lgqHvJWHLGW5TuObJrfyEi6+ASTKDBWikGvPqy9Yiw= +github.com/minio/minlz v1.0.1-0.20250507153514-87eb42fe8882/go.mod h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= @@ -432,8 +456,6 @@ github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= @@ -464,16 +486,14 @@ github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQm github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8= -github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= -github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= -github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= -github.com/pion/stun/v2 v2.0.0 h1:A5+wXKLAypxQri59+tmQKVs7+l6mMM+3d+eER9ifRU0= -github.com/pion/stun/v2 v2.0.0/go.mod h1:22qRSh08fSEttYUmJZGlriq9+03jtVmXNODgLccj8GQ= -github.com/pion/transport/v2 v2.2.1 h1:7qYnCBlpgSJNYMbLCKuSY9KbQdBFoETvPNETv0y4N7c= -github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= -github.com/pion/transport/v3 v3.0.1 h1:gDTlPJwROfSfz6QfSi0ZmeCSkFcnWWiiR9ES0ouANiM= -github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0= +github.com/pion/dtls/v3 v3.1.2 h1:gqEdOUXLtCGW+afsBLO0LtDD8GnuBBjEy6HRtyofZTc= +github.com/pion/dtls/v3 v3.1.2/go.mod h1:Hw/igcX4pdY69z1Hgv5x7wJFrUkdgHwAn/Q/uo7YHRo= +github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8= +github.com/pion/logging v0.2.4/go.mod h1:DffhXTKYdNZU+KtJ5pyQDjvOAh/GsNSyv1lbkFbe3so= +github.com/pion/stun/v3 v3.1.2 h1:86IhD8wFn6IDW4b1/0QzoQS+f5PeA8OHHRn8UZW5ErY= +github.com/pion/stun/v3 v3.1.2/go.mod h1:H7gDic7nNwlUL05pbs6T1dtaBehh/KjupxfWw3ZI7cA= +github.com/pion/transport/v4 v4.0.1 h1:sdROELU6BZ63Ab7FrOLn13M6YdJLY20wldXW2Cu2k8o= +github.com/pion/transport/v4 v4.0.1/go.mod h1:nEuEA4AD5lPdcIegQDpVLgNoDGreqM/YqmEx3ovP4jM= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -506,13 +526,12 @@ github.com/quic-go/webtransport-go v0.6.0 h1:CvNsKqc4W2HljHJnoT+rMmbRJybShZ0YPFD github.com/quic-go/webtransport-go v0.6.0/go.mod h1:9KjU4AEBqEQidGHNDkZrb8CAa1abRaosM2yGOyiikEc= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -558,25 +577,19 @@ github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe h1:nbdqkIGOGfUAD54q1s2YBcBz/WcsxCO9HUQ4aGV5hUw= -github.com/supranational/blst v0.3.16-0.20250831170142-f48500c1fdbe/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= +github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE= +github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -596,15 +609,26 @@ github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU= +github.com/wlynxg/anet v0.0.5/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc= +go.opentelemetry.io/otel v1.46.0/go.mod h1:Gj3SEScelsNC45tp4nSxRYlS+f5iez7W8XPMCt905kE= +go.opentelemetry.io/otel/metric v1.46.0 h1:yBnkXvgV7AXFILZc5K6IZe/CBFF3OS7BJ8ov6/lj0K8= +go.opentelemetry.io/otel/metric v1.46.0/go.mod h1:iPmdWqifKUdzziPkvvzIJXITl56fQx2mGM/DHLB3/2o= +go.opentelemetry.io/otel/sdk v1.46.0 h1:h5CNQQjEbuQXY/JfZtgt3i7HVFV3aHPO2OAwO2eTYPI= +go.opentelemetry.io/otel/sdk v1.46.0/go.mod h1:GAERFXFt5SYCEB+YiKUbMBeza6UaDH7GmGOZEfh2gSM= +go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c= +go.opentelemetry.io/otel/trace v1.46.0/go.mod h1:J7GAXweO77XSFkB/rmAqk9D6ihszhFjLU+d9WuUxDLI= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -626,6 +650,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -638,11 +664,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M= +golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= @@ -656,10 +679,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.39.0 h1:UF5zwQdCRRUpHfyPwr7d4UrGiVeldIsogtzWVnczL74= +golang.org/x/mod v0.39.0/go.mod h1:bvIbwjQ0HUFFf5AKukeeYQG4ZBUG9yxQbR9aEweIwYY= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -682,13 +703,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= +golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -702,10 +718,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -737,38 +751,31 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20260811182544-a038080d80e5 h1:ZUSxONxc981v7AW7QUg+I9WwZzSTTJ019ENBYr5pV/Q= +golang.org/x/telemetry v0.0.0-20260811182544-a038080d80e5/go.mod h1:LVehoXe41cL5SCVQilsV7Gg6BNG+Js6P9PhSbYTIUkQ= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= -golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -785,10 +792,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/tools v0.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI= +golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -818,8 +823,8 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From e7274c52b252d8b3777078140ec68901eb849aa6 Mon Sep 17 00:00:00 2001 From: syntrust Date: Fri, 9 Oct 2026 15:22:18 +0800 Subject: [PATCH 2/3] ci: upgrade golangci-lint to v2 --- .github/workflows/golangci-lint.yml | 9 +- golangci.yml | 273 ++-------------------------- 2 files changed, 22 insertions(+), 260 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 3487c1db..c0cdd878 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -15,17 +15,14 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v6 with: go-version-file: go.mod cache: false - name: golangci-lint - uses: golangci/golangci-lint-action@v3 + uses: golangci/golangci-lint-action@v9 with: - # Require: The version of golangci-lint to use. - # When `install-mode` is `binary` (default) the value can be v1.2 or v1.2.3 or `latest` to use the latest version. - # When `install-mode` is `goinstall` the value can be v1.2.3, `latest`, or the hash of a commit. - version: latest + version: v2.14.0 # Optional: working directory, useful for monorepos # working-directory: somedir diff --git a/golangci.yml b/golangci.yml index 99657d40..9496e5e7 100644 --- a/golangci.yml +++ b/golangci.yml @@ -1,269 +1,34 @@ -# Options for analysis running. +version: "2" + run: - # The default concurrency value is the number of available CPU. concurrency: 4 - # Timeout for analysis, e.g. 30s, 5m. - # Default: 1m timeout: 5m - # If set we pass it to "go list -mod={option}". From "go help modules": - # If invoked with -mod=readonly, the go command is disallowed from the implicit - # automatic updating of go.mod described above. Instead, it fails when any changes - # to go.mod are needed. This setting is most useful to check that go.mod does - # not need updates, such as in a continuous integration and testing system. - # If invoked with -mod=vendor, the go command assumes that the vendor - # directory holds the correct copies of dependencies and ignores - # the dependency descriptions in go.mod. - # - # Allowed values: readonly|vendor|mod - # By default, it isn't set. modules-download-mode: readonly - # Exit code when at least one issue was found. - # Default: 1 - issues-exit-code: 10 - # Include test files or not. - # Default: true tests: true - # Which dirs to skip: issues from them won't be reported. - # Can use regexp here: `generated.*`, regexp is applied on full path, - # including the path prefix if one is set. - # Default value is empty list, - # but default dirs are skipped independently of this option's value (see skip-dirs-use-default). - # "/" will be replaced by current OS file path separator to properly work on Windows. - skip-dirs: - - bin - - vendor - # Enables skipping of directories: - # - vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ - # Default: true - skip-dirs-use-default: true - # Which files to skip: they will be analyzed, but issues from them won't be reported. - # Default value is empty list, - # but there is no need to include all autogenerated files, - # we confidently recognize autogenerated files. - # If it's not please let us know. - # "/" will be replaced by current OS file path separator to properly work on Windows. - skip-files: + issues-exit-code: 10 -# output configuration options output: - # Format: colored-line-number|line-number|json|colored-tab|tab|checkstyle|code-climate|junit-xml|github-actions|teamcity - # - # Multiple can be specified by separating them by comma, output can be provided - # for each of them by separating format name and path by colon symbol. - # Output path can be either `stdout`, `stderr` or path to the file to write to. - # Example: "checkstyle:report.xml,json:stdout,colored-line-number" - # - # Default: colored-line-number - format: colored-line-number - # Print lines of code with issue. - # Default: true - print-issued-lines: true - # Print linter name in the end of issue text. - # Default: true - print-linter-name: true - -# lint setting -linters-settings: - errcheck: - # Report about not checking of errors in type assertions: `a := b.(MyStruct)`. - # Such cases aren't reported by default. - # Default: false - check-type-assertions: false - # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`. - # Such cases aren't reported by default. - # Default: false - check-blank: false - # DEPRECATED comma-separated list of pairs of the form pkg:regex - # - # the regex is used to ignore names within pkg. (default "fmt:.*"). - # see https://github.com/kisielk/errcheck#the-deprecated-method for details - ignore: fmt:.*,io/ioutil:^Read.* - - funlen: - # Checks the number of lines in a function. - # If lower than 0, disable the check. - # Default: 60 - lines: 60 - # Checks the number of statements in a function. - # If lower than 0, disable the check. - # Default: 40 - statements: 40 - - govet: - # Report about shadowed variables. - # Default: false - check-shadowing: true - # Enable analyzers by name. - # (in addition to default: - # appends, asmdecl, assign, atomic, bools, buildtag, cgocall, composites, copylocks, defers, directive, errorsas, - # framepointer, httpresponse, ifaceassert, loopclosure, lostcancel, nilfunc, printf, shift, sigchanyzer, slog, - # stdmethods, stringintconv, structtag, testinggoroutine, tests, timeformat, unmarshal, unreachable, unsafeptr, - # unusedresult - # ). - # Run `go tool vet help` to see all analyzers. - # Default: [] - enable: - # - atomicalign - enable-all: false - disable: - # - shadow - disable-all: false - - golint: - # minimal confidence for issues, default is 0.8 - min-confidence: 0.8 - - gocyclo: - # Minimal code complexity to report. - # Default: 30 (but we recommend 10-20) - min-complexity: 35 - - gocognit: - # Minimal code complexity to report. - # Default: 30 (but we recommend 10-20) - min-complexity: 35 - - maligned: - # Print struct with more effective memory layout or not. - # Default: false - suggest-new: true - auto-fix: true - - dupl: - # tokens count to trigger issue, 150 by default - threshold: 100 - - goconst: - # minimal length of string constant, 3 by default - min-len: 3 - # minimal occurrences count to trigger, 3 by default - min-occurrences: 3 - - depguard: - list-type: blacklist - include-go-root: false - - lll: - line-length: 240 - tab-width: 1 - - misspell: - # Correct spellings using locale preferences for US or UK. - # Default is to use a neutral variety of English. - # Setting locale to US will correct the British spelling of 'colour' to 'color'. - locale: US - ignore-words: - - someword - - nakedret: - # Make an issue if func has more lines of code than this setting, and it has naked returns. - # Default: 30 - max-func-lines: 31 - - unused: - check-exported: true - unparam: - check-exported: false - gocritic: - enabled-checks: - disabled-checks: - enabled-tags: - - performance - settings: # settings passed to gocritic - captLocal: # must be valid enabled check name - paramsOnly: true - rangeValCopy: - sizeThreshold: 32 + formats: + text: + path: stdout + print-issued-lines: true + print-linter-name: true + colors: true linters: - disable-all: true - # Enable specific linter - # https://golangci-lint.run/usage/linters/#enabled-by-default + default: none + exclusions: + generated: lax + paths: + - (^|/)(bin|vendor|third_party|testdata|examples|Godeps|builtin)/ + +formatters: enable: -# - bodyclose -# - deadcode -# - depguard -# - dogsled -# - errcheck -# - gochecknoinits -# - goconst -# - gocritic -# - gocyclo - gofmt -# - goimports -# - gosec -# - gosimple -# - govet -# - ineffassign -# - interfacer -# - misspell -# - scopelint -# - staticcheck -# - typecheck -# - unconvert -# - unparam -# - varcheck -# - godox -# - structcheck -# - maligned + exclusions: + paths: + - (^|/)(bin|vendor|third_party|testdata|examples|Godeps|builtin)/ issues: - # Show only new issues: if there are unstaged changes or untracked files, - # only those changes are analyzed, else only changes in HEAD~ are analyzed. - # It's a super-useful option for integration of golangci-lint into existing large codebase. - # It's not practical to fix all existing issues at the moment of integration: - # much better don't allow issues in new code. - # - # Default: false. - new: false - # List of regexps of issue texts to exclude. - # - # But independently of this option we use default exclude patterns, - # it can be disabled by `exclude-use-default: false`. - # To list all excluded by default patterns execute `golangci-lint run --help` - # - # Default: https://golangci-lint.run/usage/false-positives/#default-exclusions - exclude: - - /bin - # Excluding configuration per-path, per-linter, per-text and per-source - exclude-rules: - # Exclude some linters from running on tests files. - - path: _test\.go - linters: - - gocyclo - - errcheck - - dupl - - gosec - # Run some linter only for test files by excluding its issues for everything else. - - path-except: _test\.go - linters: - - forbidigo - # Exclude known linters from partially hard-vendored code, - # which is impossible to exclude via `nolint` comments. - # `/` will be replaced by current OS file path separator to properly work on Windows. - - path: internal/hmac/ - text: "weak cryptographic primitive" - linters: - - gosec - # Exclude some `staticcheck` messages. - - linters: - - staticcheck - text: "SA9003:" - # Exclude `lll` issues for long lines with `go:generate`. - - linters: - - lll - source: "^//go:generate " - # Independently of option `exclude` we use default exclude patterns, - # it can be disabled by this option. - # To list all excluded by default patterns execute `golangci-lint run --help`. - # Default: true. - exclude-use-default: false - # Maximum issues count per one linter. - # Set to 0 to disable. - # Default: 50 max-issues-per-linter: 0 - # Maximum count of issues with the same text. - # Set to 0 to disable. - # Default: 3 max-same-issues: 0 - From 00d28e5aa8d6190e70f2b9211f93f8c0556ed844 Mon Sep 17 00:00:00 2001 From: syntrust Date: Fri, 9 Oct 2026 18:41:16 +0800 Subject: [PATCH 3/3] lint v2 --- Makefile | 3 ++- golangci.yml | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 04a1f607..da9bacad 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,8 @@ test: go test -v ./... lint: - golangci-lint run -E goimports,sqlclosecheck,bodyclose,asciicheck,misspell,errorlint -e "errors.As" -e "errors.Is" + golangci-lint fmt --config=golangci.yml --diff + golangci-lint run --config=golangci.yml -E sqlclosecheck,bodyclose,asciicheck,misspell,errorlint .PHONY: \ diff --git a/golangci.yml b/golangci.yml index 9496e5e7..8f1c90c9 100644 --- a/golangci.yml +++ b/golangci.yml @@ -19,12 +19,17 @@ linters: default: none exclusions: generated: lax + rules: + - linters: + - errorlint + text: errors\.(As|Is) paths: - (^|/)(bin|vendor|third_party|testdata|examples|Godeps|builtin)/ formatters: enable: - gofmt + - goimports exclusions: paths: - (^|/)(bin|vendor|third_party|testdata|examples|Godeps|builtin)/