Releases: networked-art/cryptopunks
@networked-art/punks-sdk@0.1.0
Minor Changes
-
01edc56Thanks @jwahdatehagh! - AddaddressLabel/addressForLabelfor curated, non-ENS address labels.addressLabel(address)returns anAddressLabel({ short, name }) for a
known address, orundefined. Checksum-insensitive.shortis the compact
form for inline display (e.g.NODE);nameis the full name for headings
and tooltips (e.g.NODE FOUNDATION).addressForLabel(text)is the reverse: it resolves either label form (short
or full) to its address, case- and punctuation-insensitively — for resolving
a typed label to an account in search.- Hand-curated seeds: NODE FOUNDATION and YUGALABS (in
address-labels.ts). - Curated-collection institutions are the single source of truth for their own
label:CuratedCollectionInstitutiongains an optionaladdress(drives the
label) and an optionalshort(compact badge form, defaulting to the slug
uppercased).addressLabelderives{ short, name: title }for any
institution that declares anaddress. No addresses are bundled yet; add
verified ones to the institution entries insearch-collections.json.
-
65bf873Thanks @jwahdatehagh! - Add an optional per-PunksourceTemplateto curated collections, plusforPunk
andmatcheslookups for surfacing collections in a UI.- A collection (or an institution) may set
sourceTemplate— a URL with an
{id}placeholder (e.g.https://museumpunks.com/{id}) — to deep-link a
single Punk on the curating site. Optional and validated;sourceis
unchanged. punks.collections.forPunk(id)returns the collections a Punk belongs to,
each with the institutions that hold it and a resolvedsourceUrl(the most
specificsourceTemplatefilled with the id, else the institution / collection
source). Ids outside0..9999return[].punks.collections.matches(text)returns every collection (optionally
narrowed to one institution) whose alias appears anywhere in a phrase, for
surfacing an explainer alongside a search.- New
CuratedCollectionMembershipandCuratedCollectionMatchtypes;
sourceTemplate?added toCuratedCollectionandCuratedCollectionInstitution.
- A collection (or an institution) may set
-
0c4bac3Thanks @jwahdatehagh! - Add an optionalstandardtocreatePunksSdk(and the offline data client) that
scopes curated collections to a single Punk standard.- When set, only collections of that standard resolve in
textsearch; an alias
of any other standard falls through to a literal trait lookup. The
collectionsfacade (list/get/has) is scoped to match. Left unset,
every collection resolves — the default, so existing behavior is unchanged. parseSearchTexttakes a matching{ standard }option.- The standalone
searchCollections/getSearchCollectionexports stay global.
- When set, only collections of that standard resolve in
-
37e2007Thanks @jwahdatehagh! - EveryContractWritePlannow carries akinddiscriminator.- New required
kind: PlanKindfield onContractWritePlan, a string-literal
union naming every prepared transaction across the canonical market, the
auction, the vault, the stash, the C721 / legacy / V1 wrappers, and the V1
market — so a UI can branch on the action without parsingdescription. PlanKindis exported alongside the existing action types. Plans built
through the SDK gain the field automatically.
- New required
-
37e2007Thanks @jwahdatehagh! - Add the native bidding surface toPunksMarketClient.bid(punkId)reads the currentpunkBidsentry into a newPunkMarketBid
({ punkId, hasBid, bidder, valueWei }).enterBid,acceptBid, andwithdrawBid(each with aprepare*variant)
wrapenterBidForPunk,acceptBidForPunk, andwithdrawBidForPunkon the
canonicalCryptoPunksMarket.
-
#7
5510214Thanks @seanbonner! - Add a curated-collections layer: named, sourced sets of Punk ids that resolve
in search and through a lookup API. Ships the on-chainburnedset (12 Punks)
in a new bundledsearch-collections.json.punks.search({ text: 'burned punks' })resolves whole-phrase collection
aliases to their id set via the existingincludeIdspath, composing with
the rest of the query (burned alien,burned OR alien). Quoting opts back
out to a literal trait lookup.punks.collections.list()/.get(slug)/.has(slug)expose the sets for
UI, each with{ slug, title, description, aliases, source, standard, ids }.
StandalonesearchCollectionsandgetSearchCollectionare also exported.- New
CuratedCollectiontype.normalizePunkStandardand thePunkStandardRef
type are unchanged for consumers (re-exported from their previous module).
By @seanbonner.
-
#8
691ac11Thanks @seanbonner! - Add themuseumcurated collection (16 Punks across 6 institutions) with
searchable per-institution sub-sets.punks.search({ text: 'museum punks' })returns the whole institution-held
set;search('MOMA'),search('zkm'),search('museum of modern art'),
etc. each resolve to just that institution's Punks.- A collection may now nest
institutions, each independently resolvable. The
collection'sidsis the union of its institutions, and the deep-freeze of
the bundle extends to them. NewCuratedCollectionInstitutiontype;
punks.collections.get('museum')includes theinstitutionsarray. - Source data is MoMA, ZKM Karlsruhe, LACMA, Centre Pompidou, ICA Miami, and
Toledo Museum of Art (museumpunks.com). Two of the museum Punks (#2838,
#5449, both ZKM) are also in theburnedset.
By @seanbonner.
-
#9
5253171Thanks @seanbonner! - Add theperfect-and-pricelesscurated collection: the 24 Punks printed and
shown in Kate Vass Galerie's 2018-2019 "Perfect & Priceless" exhibition, each
framed print backed by its seed phrase sealed in an envelope.- Resolves under every name the set is known by —
perfect & priceless,
perfect and priceless,kate vass,kate vass galerie,paper punks,
paper. - The collection alias matcher now skips punctuation-only tokens, so the
&
spelling of a name matches the same set as the spelled-out form.
By @seanbonner.
- Resolves under every name the set is known by —
-
37e2007Thanks @jwahdatehagh! - Add a@networked-art/punks-sdk/similarityentry point: an in-memory index
that scores how alike two Punks are and surfaces look-alikes and
recommendations from a set of likes and dislikes.createPunksSimilarity/PunkSimilarityIndexbuild over the offline
dataset (optionally including per-pixel data).score(a, b)returns a 0–1
score,components(a, b)its breakdown across type, head, accessories,
colors, scalar traits, and (when available) pixels, andexplain(a, b)the
shared / only-A / only-B traits and colors plus per-axis scalar deltas behind
that score.similar(punkId, options)ranks the rest of the collection;recommend({ liked, disliked, ... })blends multiple seeds with a dislike penalty. Both
take aprofile(balanced|traits|visual|colors) or explicit
weights, plusfilter/excludeIds/includeSelf/limit/
minScore/diversify.- New types:
PunkSimilarityProfile,PunkSimilarityComponents,
PunkSimilarityWeights,PunkSimilarityOptions,
PunkSimilarityRecommendOptions,PunkSimilarityResult,
PunkSimilarityScalarDelta,PunkSimilarityExplanation, and
PunksSimilarityConfig.
-
37e2007Thanks @jwahdatehagh! -PunksAuctionand its escrow are deployed on mainnet; wire up their addresses
and round out the auction client.- New
PUNKS_AUCTION_ADDRESSandPUNKS_AUCTION_ESCROW_ADDRESSconstants.
PunksAuctionClientnow defaults to the live address (soaddressis
optional in config but always set) and adds the deployed reads
escrowAddress(),punksDataAddress(),activeLotFor({ seller, standard, punkId }), andbalanceOf(account);vaultFactoryAddress()now reads
VAULTS. - Combined create-and-execute flows
createLotAndAcceptOfferand
createLotAndStartAuction(mirrored on the SDK facade ascreateLotAndAccept
/createLotAndStartAuction), plusclearStaleLots(ids)andwithdraw()for
ETH credited afte...
- New