From 56dfea0bfc22920229e777dd4b3542927d4996c2 Mon Sep 17 00:00:00 2001 From: Flotapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Wed, 15 Jul 2026 20:05:41 +0200 Subject: [PATCH 1/2] polkadot-rpc bench 086 + /chains/polkadot + Parity product (#1184) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add bench 086 polkadot-rpc: first Substrate chain in the RPC cluster Extends rpc-capabilities to Polkadot, the first non-EVM, non-Solana chain in the cluster. Substrate JSON-RPC via chain_getHeader (returns hex-encoded block number matching EVM's eth_getBlockByNumber shape), staleness by relay-block gap (40 blocks, ~4 min at Polkadot's ~6 s cadence). Harness changes: - Chain.Kind gains "polkadot" alongside "solana" and default (EVM). - New callSubstrateHeader: chain_getHeader POST, parses hex block number, returns parentHash as the observed hash. Same latency measurement + result classification as the EVM path. - probeOne switches on Kind (was if solana / else). polkadot uses polkadotStaleBlockGap = 40. Consensus observation is skipped because chain_getHeader returns parentHash (N-1), not the current block hash (deriving current hash needs Blake2 over the SCALE- encoded header, out of scope). - Archive loop is skipped for polkadot the same way as solana: Polkadot state accesses via state_getStorage keyed by Blake2 storage keys, no chain-agnostic depth analog for eth_getBalance-by-depth. Providers at launch (3, live-verified on 2026-07-15 with four consecutive chain_getHeader probes each): - polkadot-official (Parity, rpc.polkadot.io) - onfinality (public gateway, Web3 Foundation grantee) - publicnode (Allnodes, extends its multi-chain footprint to Substrate keyless) Audited and excluded from the launch cohort: - 1RPC: filters chain_getHeader as "Not Allowed" on the privacy relay. Revisit if they expose a Substrate-friendly method set. - Dwellir: 503 Service Unavailable during the audit sweep, revisit once the gateway stabilises. - Ankr: paid Polkadot tier only. - Chainstack: key-gated on Substrate. - RadiumBlock: rejects without referral header. - Grove / Thirdweb: invalid-chain response. Spec (benchmarks/polkadot-rpc.yml, bench № 086): - Same schema as moonbeam-rpc / avalanche-rpc etc. so the parent rpc-capabilities benchmark, chain cluster page and hub card render it identically. - Methodology documents the Substrate specifics: probe method choice, staleness scaling, why no archive-depth or hash-quorum columns. - SEO/finding tokens use the standard {{best_name}} / {{best_p50}} / {{p50:slug}} template surface, consistent with other -rpc benches. - Provider tag copy explains OnFinality and Dwellir's Web3 Foundation grantee status so the leaderboard reads correctly for someone who knows the Polkadot infra landscape. Local checks: - go build ./... clean. - go test ./... clean. - bun test src/ - 95/95 pass across 10 files, including the citation reliability floor and consistency tests added in #1175. * polkadot page + parity/onfinality/dwellir products Wires the /chains/polkadot hub page, provider profiles, and logo assets that surface once bench 086 polkadot-rpc starts feeding Prom. - chains.ts: add Polkadot to CHAINS registry (L1, nativeSymbol DOT). Auto-populates /chains/polkadot once benches referencing chain="polkadot" land. Adaptive KPI strip fills in DefiLlama TVL, DEX volume and stables when the chain-kpis harness starts sourcing Polkadot alongside the other L1s. - provider-registry.ts: three new entries for the Polkadot cohort. * parity: brand entry for Parity Technologies (Polkadot / Substrate implementation shop, operator of rpc.polkadot.io). * polkadot-official: endpoint-level entry describing the reference rpc.polkadot.io keyless endpoint; providers.ts aliases the slug to parity so the /products page collapses under the operator's brand. * dwellir: brand entry for Dwellir (Web3 Foundation grantee, keyless Substrate infra) — excluded from the 086 launch cohort due to a 503 during the audit sweep but kept in the registry for the revisit and for other places their brand might appear. - providers.ts: add polkadot-official → parity alias and canonical brand casings for polkadot / parity / onfinality / dwellir so the /products hub, badges, and OG images render the correct name without the title-case fallback butchering them. - logo-manifest.ts: polkadot.png (chain hero), parity.png (product page logo), plus polkadot-official → parity slug alias so the endpoint chip on the bench page picks up Parity's mark automatically. 95/95 pass on bun test src/. Local build clean. --------- Co-authored-by: Florent Tapponnier --- public/logos/parity.png | Bin 0 -> 7504 bytes public/logos/polkadot.png | Bin 0 -> 1745 bytes src/data/provider-registry.ts | 18 ++++++++++++++++++ src/lib/chains.ts | 8 ++++++++ src/lib/logo-manifest.ts | 4 ++++ src/lib/providers.ts | 9 +++++++++ 6 files changed, 39 insertions(+) create mode 100644 public/logos/parity.png create mode 100644 public/logos/polkadot.png diff --git a/public/logos/parity.png b/public/logos/parity.png new file mode 100644 index 0000000000000000000000000000000000000000..3d06da06c3430d580424eb064d336f8f99736272 GIT binary patch literal 7504 zcmW+*cRbYpAD56(=9wAMAv!a0_KY(!F5{BDviF{aBYR|1=2_|6A)BnM(m<5#ak%Wg z`Mv%AIQPfr;Xa?wYdqIGMps+y7C8$!0Rh1+b%Y8MeD_~{ND0ATE-A?Y0s=NhbrnT@ z|Gc#~0Vw_7=a+7I+S#44@%M5I^oIH=haIVj_~Py)R8U2}(D?JQRGs6oLH)Ixr6krY z6QniPF1fveIuR7PIbx+QMWjU*l@7MIUpL8$!r?a9=ac190g-`!$2lfQD#jVj^g^wg`eE4ZL zf=cdHe7w!1AcOL2)d+%&-MCYYjb#3kG(Lz#4NQi^@ExN`AEvJI^ z_ORdonW|2ny?@rAt)(?9p3i`?%>I0Iom<&h8KSzH@`}XxY}=-772hii(Q<{{CKGwJ{vrv@z5E3%4*x^%MuY>#nxX zn8?vZO-+)*!pU9Sv)le0p+}q>ZmJ?x*qaJa+Vwxx5lZThX{f0!Y+VHo%BVjtF50-b zxY*mTa9nKNkdkY!t*x!BjD@O8$+1#3rn_vE>sQ{EaE*+P9%-W{d^vltKGE1NXp8L{ z?uocTMNUq>w!V%xq~{VB_x1FoJV5$KL6<&q=S9Bz32016&IKFW}nsRki)5%7_y~Xv%AOn zVHc9SzcK8SU&I-Ia)vDQCa_Z8_^R}0VqzJGi|MhN^b2P}S)PY|w(_vFoI5+-twxYz zp4T-rywm3g*F^1Fu#27nPoBJPXpj(8Z)$GN$jsElAi*UoyE^R2$w^I3jr;k5N7H0l zTH2>ia+3`&8SE;sB}fNbTTEOW1%o;b(cJ24(8i=BTIuDf_RpRwItKOB_4RcR506Hu z?epiE`T10mB}qw1em*`To<`-*eaSRo42<;jYz5+y2ML z$KBoCfsfNQFm-ix-@kvCl3U-J>yDok|AN)FOh`;zT3i&)*w}&V>FH7HG;3g#{{3Fn z^m2D^^jT$ia+pL|^%%91{3&qXu@ovsr>55T@1J9gO409Mb8~Y=MO@O-(zCq0JUqs_ zG(`qvP8JpfM$Hsbwq<2y$})J*rq;s3&c43BpPFX}4ehpzs>m1Vq)x%Xt)&2QMk>nQ z23A&A(|95_S63&RyvjU`p4K~OV;bvVW~ly5CKi@hktqxoOYM*NP+sot>I|7}u;0J(#)l^z>wJMt$*w`{Qxlb3`|8_<4I{DUs&|4DpSvWMKE-ZVdnW6)BRq z`0tfBNcvF6~($LSJFRGpY7Qm6A zp%;5?Ve5bEmUJWgldk~C)Re8)`b(w3yPVuy&OQK6pW@?hn)uQZrKF@>i@*C&LL$iD zU*>|W{isLip0UJ2p(*MfuPhfAVIK?4Js&;^2~axy4;26sFc?f}{EleKix&j5oTlK` z$;4tCEWEwEuAk7Vsj7N_^ze zF7I1^!lM&Oucf1t6Dc@+B?P0-zrMDXHekauVGs57^}V>bpynN)owe}uJB-gQKvtNA z9^*DPT&Fg1?(og_OS!kayc&y=GBPj-dHZ48rk>Np##9TR$d40U{&YaO$w5rCwBZ=i zp zTm=kO`}~J!z@zR+^ss4Baq;DLQrJ&BS_*;1rKQmQQKNWMN`4q*XA*1KJyfj5As39O zHGutkAS~<-R1XF@Fo@f``dzKZj~^otjb6)?cMYq5DgmNRzi*V)l)-LU7*nhxf4-N0 zdA2+-pl;`ERTu++Eadb6V3>&e`%U{(s#K`kbZe8}=JeQ@VY)`o3%&=~hK9q#!{-;x zhBuS?c6WDkv$8CTJf9R#Kx}bVFxFdCRM90ZgT}LO5BWfEb8>Q+-qmOE!G28ot1j z3<9)W`rLB`Feh}p+9;JUiU%siSOyr1VDc1DlujOeZf$LCb5mYiTs0a!Lkjf7`cz9M zv$_X7?~SydQgaK|e!;`?k&22*dnns*XhU0DNT9ZZx;hyf!^LKWJJ4?9HMZXG$Wc;i zsU--gRKO0DZDyQ2OAzMg=NIuW#qQ%Es?mLJeWHP{Ve8pO)X7QUNi2o4i%VQ=>>Z3( zIdSpp*L1l#RSA5S*QA3AnVDI>mXd`Zfyscq9w@Kdde)Wt6-P!!=3UM&F3vEoo<9_x zLZ2a?rh%(>nV7X50sU=$X4ks=UHX?Xd}MceWTZFzo41h_GFvq#9B|>1k;zK2eH4jmbhTFG3=sx*MCD z$3{mLTls*_0ct0CTD1!M0s&2pjg3W9Fy`>^6XO1yt(sqoPC?%@mn0@8x_vsf1CT$x zrze-6pPamPvid>jX^qO^{d5gmFR$Ish#SDZ+%ZQAW+o*hbOuSRpu6V?a(y0aX$c$p z70|FJ-54-e8uh={vWws}>IZ`UTuLn|JzxHVl!F@^ZV2B4` zSy55JGw#Teot@pWA^7dvH+G3u5gd8N*3+so>_Xh!wm@+WhaL`QKiEs~0FtLE z##KPJi%Wgya|~UQIb2kzQ@HkpP-eD5n2Bcn%H@lnSYbLyh>; zMaM!jzv4pohSUNd50jM38v;SReA(aM|6;MESPst=%`7P;b=8-&D&GYD4;M5@+lHY=+=33w)9;XSrq^yFC?9kH>t$yC@4x@H zn3*LdB}axa6(%RY@e_ySj)Bwt2_c8Q55C{Mx^ALI_HL1`uxa$7t>8XU6n8NoS;OM~eFumIr zeefVbdk>?4DtBhtyeD)dLcDNK2n=j^IH85Ml<*Xq2mGWKELU6|hy>f?9bDrl`PjSH zLSn%DH`;xpBdQMAU8=7aZ}Tl`<1iXZQdKFW5}uRtOyR6nb6QsAU-H_ zfHAPp4m2}kpKjwwRVL_UvXl+nD=#V{T)6jP^qo=n0z%q%t;3dAk-EiqJzR&ZV?uOc zao{zieo$By1#q#ERUY&M+*-lh>d_mF!3rmF_u21xx2>>VjGVMF3j#RHTdHxR}7>uYlrLwY8c;g&Y6PUbYWhqCd-KAVN z!YO0bx7ATmQCX7>nXspXNq2FJix%;BA3b`c$gZacc?fh#aYSiB0Rg<%!%=Ry3r(>( z*>qj+)pqn@`^El;!O66$Dp&z;TVbK)Xr;l;tP+}tc?6K%ObZC$ACg%K#d^1+<jJ2V9e!$kFf3SmwA$bIZ|J3YN+InfV|@7 z!s4BT2*6`90k`>toxQz%Pb|GE%I^8|zTh(Z`w9)%*@{G< z9!lZ%tgNgb_s5Ey{~V3iKEFk-;of9IuKc$4mP?nC2ed6nUOg4;2k`e2vg7wfMD(ol zqD3tSY()Lt1Q;0^Eyl&-RM{EFCY!wGDiZ1G=^-udq+X5*6h2^f>T~MszPo1({QDC4I4(nr@}Kb7=Wt)Hfo|p z@%EE0Pft%NpMQ{6c8870reBrh)j+Z^4~*%PQ(zor&-X@>%>4mcf|2Z~!Go1b+vpyV}ntI9k1I+F984s})eEak5~z|MSop!<(3e^X$cClyZqy}zW6tCO^I@LJ~6R0?eP_>>DGV`Z3j8Ma9X-9 zC5#t9#Hft#)m_7#{rw1EU-8}={Hs@_Z2Jf;($(T5IbbzXXvS*0hNF-bpHXo9{JiJC zUwl)NM1iSa_&R}qvUbyPLRanuM1Z^pkH;H*Fng?{^Lu^BLJ0*pxTmM*rpYU`A;8n` zZ)Kl7c~a|*N45#sDWQlIWlq;>fy)~-i9>r55i08G4fSz^vC`39AG~FQK!IokQ`1*TY?TZ9y*P!gbMw0(Kj)f92v2$Y3uD+-d&iV2T9kS zoK~TCX2VQq5J>Be<{axz#@;{EKSoSVO@X0CK6z5HcD=`fbv~@$rbggdJ(D9pu(EsN zsR$?zhohvVOq=4lzP+>K=-}|OMCxE~&%&);Q|;?bnJy&>2>bG!XA{UKl4~6FQ$&i% z*j@wAz7+_K|I`Ma$OLFUWWsZzKar18ZJs`5UW{A;bFj0hKKl_5)Vj$7CDQO$iHV;) z7D%w{WSdNCK%iRCF_bi9ynpWk798u$;zrSn(aZ#$B6udeG0{L}eL9tu#YAFkHw$6l zSNb)!Fgh}_3$l&m1OV)(Xht)O;FlL_hK3Bl?`MAf@kTn@Ln$5zXZKABw!y9(vq(5v z;SL;lkN@WZiEPqQhgpPqDMP=1XQrh^zB?C8>H|>|Z^^l!fdvD&g9$KnzXbj?dRRYy z&TErq){yuSU z3R6cFnwudGFw@eH{3P2qH)HS4g{b(ryHk^+sc+n}&Z@xbj_-X*zwaSHp93eCDOp}# zwvNBs)7z^wkGN@_*!6F7Q%6hd^Ft318XSO55cH;i7!!~~^&b#3DcrcVn^lax*vV|4 zHRgA7+tkbyRHVd%l>ju;W6LX(7)jv;$uJR|sdu^Ey&9>p`~ol7m&m3}r&di3fe<;% zCD4HD#_unH@9(y`NwlH~Ro?-RE-dz46-UznB~eH#0pw8t812EH9gZP1Z4|>1{g!n0L+4AHr$4 zZgbppToIhM*Oh?qWkF*jlV&r8K~@V^w>|^kt^!{9eN|N?>k|-MUqL1uX=4NJ^=7QZ z5?rA!I3!?c(`Thz=9NDtbDv*1-d)}q8CY1{fld)W zW)0bBT6XVAISQ6@k1xhpFn1x}jrJvRNZ3~_eapR(4>vY5b2T|N)!5qI1rZI5G>#@i zh3mMJDwM#avau14XpRF%7=UDZ54y|Q9Ztl=-*s9=f;xUMYpaw%vp!}eE^Psk!#s;! zWG@_~DaNt9Q@Sv96o0zo%%_mQV`Rs)oPCgNt%K>HO}&*K;WTh=G3-2ITHci!iLPf( zXe$8i7cy-o;(G%?N^rUcKRBqxL!ky@`>RLY-`^j}pCTgc1k&h*?MVB{=!f{A<`SZ` z4J#f=ytj2gSL%Sx57|RjPuTb=@`C@k&}`heRB)FE?GJWoQSma z#Ml@^X5|%Ng2M}8PwPR_I0#7XlhwS_Hs;sY6Eu-?|x&iQbe_%;eSEns0JyWsKbIl>2RRvO-Lyt{>y1c|WpR+_KPFfbQCC5R#%Jk$1Q(7hJ*jm6?6F#*BlWg*@0_I=V_8gNodp#Df(zaYHJng&Ag&DNcQQn7frn^7<3y&IWK* zfUD4>$&maqM{cq*_@siqiLxCdt@0S5^oR-j`+6)tstS1mN7ZJw7j$bMw=D24*G zZQAptk2SZ)?u-?#3WdTSvsltp=67Laf*z`rkd&04o141@

bj$-^ia+?6+Pyc0zN z@VZFESsJgadiE@vNF?g%>${i(x8sJOt_a0|fPiZ^Zj`@%jrnhFUdb638k*VE+>8qf zN{7Kfk5fH6=CNn0EnvusFF(cY#PPkpQx&; z>RDPA-kZBh!D?Qv^FQpM?ck5LZzqw!!nHNy7)t~bj^$6aC4E*!%ykUi?dx-X4MN#Z zF&K>fCMoQ@p(p37nwrQ{j0A_-*;ynK={Wev<_SG?@U2Gfy;K~|dBUwi9;63{H=bm% z2C(>3wD3_bm$SH7&3bgj*Y`<(zY9re`|56AzV5htCRyag6YH18Uf!&>%5I1N2V?0?9SBNAK4m4Y%5Dk!Dn7G zm&Ze|udk~dJ!-f}5(X9SZLK;KWWH)>Y`j$PxB;W<>JIepxVeyru)l6!7ZMyyt3S?B zK4Bm;EP3srY?h$EpXdjB%Gq9<_c>FHusbYzyRt%CjWuFtB?>6~)^I4TG6lav}LwyOA7BA_F6{Y@WeJqVn-|Fx}H@p7$S zRJ^7*`|WLhkEUxD~&>A`3W?n3a_U z*@;O=u$XL#a(Ma4WA`^x8nZP20bg~c{h`fD1dFh*7-@cv|JWh(j^8t5JL5`s%OP#^ z$h6(Py;svYpwqvmC018gJKl|5ojDu76pV+t`#3qtnV6Z4%nz2lB8&ER;(zh;D_1l0 zclYqftI9#W00M!+zZGhSCu_3AGl4a>wOvLW?;dMuZ+9Ckv8`ZbDz#pxplPh+oefN_ zv4zFNWFm!s2safQ8*6cc5sugC?(Tl+WYprp`~APD1iVn9>B?M47Kl>XzdGAfEQ9JN zB&VdL1g5x?XF-BAF4t>fdn+7=Gn&D|D)Y$Xr(sW*q;=3PE_c*VNXZ`S%{!!(ye$lg z&$Pwj(e4)m1IsXLT*#f5m&ikCS8FOmX-l+_-=gpNaa020#e8vuS~rGEBV5Fa?4<{P z_VVgoFJrgHFV`nqUd8Jp%IS2^Sa1Ud@yj;e!O(kmWkX#)cGg9Ee5wDN0?fn1L$J9# zP5jmJLL|z^=K)j}s{kECbs;-nH;{y1zb#1w{}M%bTww6HCpspkSo5HEj0F-|(8Xdc z^pbQ8?sh%P6-BR$D?Q@l)uts^$oy+rytdVKE!Y*IuwG!tn;&W!skktbE~_LExAI4t z9pDc$d%1|!95A%D;3!k=l(%yFtraN+m_V{E?ZxL$lgE$;c{Mc#6Iko?R>HDb!rJ7mV`kG4K2K8ZR~CB0!d>!xw>fgl=Z)@wnqcpSf0`7t&6J!@JJWk9a;Zz~gt zZZ-i6zq!fodfrH*xod^4S}1}{6%`d{PAW6@r(b2D5zLz$)PfaYA!g#rZw+u)n&$UG b<+emb-X%tqXntD!ssPSs-5hJ}vH1T1Uq)LI literal 0 HcmV?d00001 diff --git a/src/data/provider-registry.ts b/src/data/provider-registry.ts index 9e23d722..18dda033 100644 --- a/src/data/provider-registry.ts +++ b/src/data/provider-registry.ts @@ -579,6 +579,24 @@ export const PROVIDER_REGISTRY: Record = { }, // ─── Public RPC providers ───────────────────────────────────── + parity: { + url: "https://www.parity.io", + description: + "Parity Technologies is the primary implementation shop behind Polkadot and Substrate, and the operator of the reference public relay RPC at rpc.polkadot.io. Also builds the Polkadot-JS Apps UI, Kusama tooling, and enterprise Substrate deployments.", + twitter: "@ParityTech", + }, + "polkadot-official": { + url: "https://rpc.polkadot.io", + description: + "Parity-operated Polkadot relay-chain public RPC endpoint (rpc.polkadot.io). Substrate JSON-RPC (chain_getHeader, state_getRuntimeVersion, system_health), keyless, rate-limited per IP. The reference endpoint any Polkadot integrator points at before wiring a dedicated node.", + twitter: "@ParityTech", + }, + dwellir: { + url: "https://www.dwellir.com", + description: + "Web3 Foundation grantee running production-grade Substrate infrastructure across globally distributed bare-metal servers. Keyless public gateways on Polkadot, Kusama and every major parachain, plus dedicated node service.", + twitter: "@dwellir", + }, "monad-official": { url: "https://docs.monad.xyz", description: diff --git a/src/lib/chains.ts b/src/lib/chains.ts index 48da5cd7..2e1fed7b 100644 --- a/src/lib/chains.ts +++ b/src/lib/chains.ts @@ -309,6 +309,14 @@ export const CHAINS: ChainEntry[] = [ description: "Sony Block Solutions OP Stack rollup in the Optimism Superchain, 2 s blocks, consumer and entertainment focus.", }, + { + slug: "polkadot", + label: "Polkadot", + category: "L1", + nativeSymbol: "DOT", + description: + "Substrate-based relay chain coordinating a parachain ecosystem via shared security. GRANDPA finality with BABE block production, ~6 s block time.", + }, ]; export const CHAIN_BY_SLUG = new Map(CHAINS.map((c) => [c.slug, c])); diff --git a/src/lib/logo-manifest.ts b/src/lib/logo-manifest.ts index a8b30069..ef2b519e 100644 --- a/src/lib/logo-manifest.ts +++ b/src/lib/logo-manifest.ts @@ -108,6 +108,9 @@ const RAW: Record = { drpc: "/logos/drpc.webp", "1rpc": "/logos/1rpc.svg", cloudflare: "/logos/cloudflare.svg", + parity: "/logos/parity.png", + onfinality: "/logos/onfinality.png", + polkadot: "/logos/polkadot.png", "base-official": "/logos/base.jpeg", binance: "/logos/binance.png", lava: "/logos/lava.webp", @@ -380,6 +383,7 @@ const ALIASES: Record = { // Long-tail RPC cluster (055-066). "sonic-official": "sonic", "monad-official": "monad", + "polkadot-official": "parity", hood: "robinhood", coin: "coinbase", "megaeth-official": "megaeth", diff --git a/src/lib/providers.ts b/src/lib/providers.ts index cd65780e..acd98747 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -40,6 +40,11 @@ const PRODUCT_ALIASES: Record = { "avalanche-official": "avalanche", "base-official": "base", "optimism-official": "optimism", + // Polkadot's "official" endpoint is Parity-operated, so the product + // page for the endpoint slug collapses to the Parity brand rather + // than a synthetic "Polkadot Foundation RPC" entry (there is no such + // separate operator). + "polkadot-official": "parity", // Oracle pair → underlying chain / asset "eth-usd": "ethereum", "sol-usd": "solana", @@ -74,6 +79,10 @@ const CANONICAL_NAMES: Record = { arbitrum: "Arbitrum", base: "Base", optimism: "Optimism", + polkadot: "Polkadot", + parity: "Parity", + onfinality: "OnFinality", + dwellir: "Dwellir", // NFT bench 040 providers — explicit brand casing. opensea: "OpenSea", // Other brand casings frequently referenced. From 70b852d65044cc0105efa3633905ad8886cc5435 Mon Sep 17 00:00:00 2001 From: Flotapponnier <160007691+Flotapponnier@users.noreply.github.com> Date: Wed, 15 Jul 2026 21:46:49 +0200 Subject: [PATCH 2/2] fix: dedup onfinality key in logo-manifest (already declared line 49) (#1186) Co-authored-by: Florent Tapponnier --- src/lib/logo-manifest.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/logo-manifest.ts b/src/lib/logo-manifest.ts index ef2b519e..a81714b3 100644 --- a/src/lib/logo-manifest.ts +++ b/src/lib/logo-manifest.ts @@ -109,7 +109,6 @@ const RAW: Record = { "1rpc": "/logos/1rpc.svg", cloudflare: "/logos/cloudflare.svg", parity: "/logos/parity.png", - onfinality: "/logos/onfinality.png", polkadot: "/logos/polkadot.png", "base-official": "/logos/base.jpeg", binance: "/logos/binance.png",