Proposal: Update MultihashHasher interface so it could support multiple hashing algorithms
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- typescript
- Ambito
- backend-api-design
Direzione di ricerca
Inizia individuando l’interfaccia MultihashHasher e i suoi utilizzi nel codice sorgente TypeScript, quindi esamina l’issue js-car collegata per il requisito di verifica. Confronta i test e i controlli dei tipi esistenti prima di definire il comportamento di compatibilità e composizione descritto qui. Il lavoro è completato quando le interfacce proposte e il union type sono implementati senza rompere gli hashers esistenti, con una copertura per i casi d’uso con un singolo algoritmo e con più algoritmi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Goal
As per https://github.com/ipld/js-car/issues/123 we do need a solution for verifying hashes in CAR files without shipping all the MultihashHasher-s with the CAR library.
Proposal
- Introduce backwards compatible change to the
MultihashHasherby introducing second OPTIONALcodeargument to thedigestmethod.- If omitted it would default to own
code. - If different code is passed it would error.
- If omitted it would default to own
- Rename
MultihashHasherinterface toMultihashHasherCaseand repurpose it for single algorithm use cases. - Introduce multi algorithm
MultihashHasherVariantinterface with the samedigestmethod and a method that returns map ofMultihashHasherCaseit's comprised of. - Define
MultihashHasheras union type discriminated bycodefield.
Here is the the sketch:
interface MultihashHasherCase<Code extends number = number> {
code: Code
digest(bytes: Uint8Array, code?: Code): Digest<Code>
}
interface MultihashHasherVariant<Code extends number = number> {
// We define `code` as optional which can never have a value. This will allow
// us to `code` as a discriminant in the union
code?: never
cases(): Record<Code, MultihashHasherCase<Code>>
digest <CodeCase extends Code> (bytes: Uint8Array, code?: CodeCase): Digest<CodeCase>
or <Case extends number> (hasher: MultihashHasher<Case>): MultihashHasherVariant<Code|Case>
}
type MultihashHasher<Code extends number = number> =
| MultihashHasherCase<Code>
| MultihashHasherVariant<Code>
Note that above makes current MultihashHasher-s compatible with proposed MultihashHasher type that is to say code that will require new type will accept all existing hashers without changes to them.
- With such a type in place
js-carlibrary would be able to requireMultihashHasherparameter in order to be able to verify digests. - Added
MultihashHasherVariantwould allow composing many hashers into one.
- Lingua principale
- TypeScript
- Stelle
- 269
- Fork
- 58
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di multiformats/js-multiformats
-
CID.decode accepts malformed binary CIDs with a 0x00 version byte or a non-32-byte 0x12 multihashAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
multiformats/js-multiformats#346 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
multiformats/js-multiformats#327 · 2 reazioni ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
multiformats/js-multiformats#312 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 32/100
multiformats/js-multiformats#302 · 1 commento ·
-
bug: not importing in jestAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 30/100
multiformats/js-multiformats#299 · 2 commenti · 2 reazioni ·
Tutte le issue di multiformats/js-multiformats
Issue simili
-
reproduced
Difficoltà 2/5 1-3 ore Idoneità per principianti 61/100
anomalyco/opencode#62873 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
code-quality good-first-issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
OpenRailAssociation/netzgrafik-editor-frontend#1481 ·
I maintainer di solito rispondono entro 1 giorno
-
🙌 icon request
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
lucide-icons/lucide#5183 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 81/100
cloudflare/capnweb#293 ·
I maintainer di solito rispondono entro 2 giorni
-
bug implicit-state
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100