Latest Repo Discovered
algorand-developper-assignment
JavaScript
·
No license
Top Contributor of the Month
11440 commits in all time
Mar 21, 2026 16:09 – Jun 19, 2026 16:09 UTC
Merge 0d42ab40a84c7222c1a02a41f10c5c5ef740896f into 2439ab99801bfe016278a60ce48550f6e700ec6a
f9d8467c
pull/104/merge
No file changes
Merge 15371747899c2fc95752c4b25ed09f46ce72a083 into 4144110e83b9afe1570a9e602f4a520dc997c6b7
677e24ac
pull/369/merge
58/3,680 ++ 41 --
fix(nft): address CodeRabbit review comments
Crate: - arc89: validate metadata size at the decode() boundary (reject > MAX_METADATA_SIZE); normalize the short-metadata identifier bit in compute_hash/set_hash so the hash always reflects the body size per ARC-89; expand the method-constant set to the full registry interface. - asa: NftMint::fractional now validates decimals in 1..=19 (returns InvalidFractionalDecimals) — fixes the 10u64.pow overflow and the decimals=0 inconsistency with is_fractional_nft. - url: encapsulate Cid (private fields + v0/v1 constructors + accessors) so an invalid CIDv0 codec state is unrepresentable; return UnsupportedCid (not MalformedCid) for unsupported v1 multicodecs. - royalty: clamp royalty_basis to MAX_BASIS_POINTS (10000) in royalty_for to prevent u128->u64 truncation; add the constant. - arc69: require `standard` on the wire (drop the serde default) so a note that omits it is rejected by from_note. - indexer: give Arc74Client a 30s default request timeout (+ with_timeout). Docs: - ADR: sync the D2 feature example with the shipped manifest (only `fetch`); add a language to the D3 fenced block (markdownlint MD040); fix the self-contradicting "Status is Proposed" line under an accepted ADR. examples/nft/mint_arc19: use Cid::v1 for the encapsulated constructor.
15371747
feat/algonaut-nft
9/231 ++ 55 --
Merge 0073561a5d9673298d1ef3a23e4c2b6098dc09e9 into e56f6efde0b906a499824f49b7c6b6c1a330e60d
c427608f
pull/383/merge
2/85 ++ 28 --
Merge ab74d5652bb9746fb9bd8b1fb25a100c477e8a96 into 4144110e83b9afe1570a9e602f4a520dc997c6b7
4c167e1e
pull/369/merge
58/3,504 ++ 41 --
ci: build the nft-feature-gated examples in CI and make
The examples/nft/* programs require `["nft", "algod"]`; with `nft` off by default, the default clippy/check/test runs skipped them. Add `--features nft` to the steps that compile examples: - Makefile: `clippy` and `test` targets (so `make ci` builds and lints them). - CI (general.yml): `cargo-check`, `cargo-clippy`, `cargo-test` jobs. `nft` is additive (default-off), so enabling it on the --all-targets / --examples steps is strictly more coverage and cannot mask a default-build breakage. The wasm-check job stays default.
ab74d565
feat/algonaut-nft
2/13 ++ 7 --
Merge 2b19cf67ae303c00344d5546ad60c52fdd6f142d into bf88db5072f7a4ca3a38f50f6cfb01658e62dfec
d852262a
pull/6592/merge
22/1,203 ++ 649 --
Merge 37748379e13558b768e74182217c5e720e252b43 into 4144110e83b9afe1570a9e602f4a520dc997c6b7
4962d292
pull/369/merge
56/3,491 ++ 34 --
refactor(examples): group examples into category subfolders; algod-backed NFT examples
Organize every example under examples/<category>/ — client, contract, app, asset, transaction, account, logic_sig, wallet, nft — with explicit [[example]] path entries. The example `name` is unchanged, so `cargo run --example <name>` keeps working. Move the NFT examples out of algonaut_nft/examples and into examples/nft, and rewrite them against a live algod instead of mocking: real suggested_params, submit, and real asset ids returned from the network (no DemoParams stub, no hardcoded AssetId). Gated on required-features = ["nft", "algod"]: - nft_mint_arc3 — pure NFT, ARC-3 off-chain metadata - nft_mint_arc19 — mutable NFT; mint then UpdateAsset the reserve - nft_mint_arc69 — on-chain metadata in the acfg note - nft_soulbound — full ARC-71 issue/hold/revoke across issuer + funded holder - nft_arc89_box — mint for a real id, build the ARC-89 box offline
37748379
feat/algonaut-nft
44/494 ++ 456 --
Merge 0a666cf4743c2a358b60bc3545a9f7f6ff110bdb into bf88db5072f7a4ca3a38f50f6cfb01658e62dfec
13e4a244
pull/6639/merge
54/6,213 ++ 1,583 --
chore: cr by @nullun, algokey command and shorthands
a04d4fe8
pull/6639/head
3/130 ++ 38 --
refactor(nft): ergonomic minting builder, idiomatic API, and examples
Redesign the asa module around a fluent NftMint builder and make the crate's API idiomatic, then add runnable examples that lead the UX. asa: - Replace the leaky create_pure_nft / create_fractional_nft free functions (which returned a half-built CreateAsset and told the caller via doc comment to attach url/hash/reserve themselves) with NftMint. NftMint::pure/fractional own the configuration; .arc3() computes the ARC-3 metadata hash and appends #arc3, .arc19() derives the reserve from a CID, .arc69() places metadata in the note. Terminals return a finished CreateAsset (into_create) or Transaction (build). - Make the NFT-shape predicates an extension trait (NftShape) so they read as methods on AssetParams. - Rework the ARC-71 Soulbound typestate so Held/Revoked carry the AssetId; claim/revoke are now total (no Option, no unwrap). url: Cid and TemplateIpfsUrl gain Display / FromStr; reserve derivation is now `impl From<Cid> for Address`; the free parse/render/convert functions become methods. arc89: add with_* flag setters so callers never poke raw flag bytes. lib: ZERO_ADDRESS is a const (was a fn); add a curated prelude. examples/: mint_pure_nft, mint_mutable_arc19, mint_onchain_arc69, soulbound_credential, resolve_metadata, arc89_preview — each builds and runs, demonstrating the new ergonomics end to end. No backward-compat concerns: the crate is unreleased.
d56b36cf
feat/algonaut-nft
11/952 ++ 196 --
feat(nft): add algonaut_nft subcrate for all NFT use cases
Introduce algonaut_nft, an offline-first workspace crate covering the NFT-related ARCs, and record/accept the design in docs/adr/algonaut-nft-subcrate.md. Coverage: - ARC-3 / ARC-69 metadata models (off-chain JSON and acfg-note), with ARC-16 traits and ARC-36 filters and ARC-53 collection declarations. - ARC-3 integrity: the `am` hash (plain SHA-256 and the domain-separated SHA-512/256 form) and SRI `*_integrity` strings. - ARC-19 template-ipfs <-> reserve-address transform, with a self- contained CID v0/v1 (base58btc + base32) codec. - ARC-71 soulbound (non-transferable ASA) lifecycle as a typestate, plus pure/fractional NFT ASA presets over the existing asset builders. - ARC-72/ARC-73 smart-contract NFT ABI signatures, selectors and interface ids, and ARC-18 royalty-enforcer bindings. - ARC-74 indexer request/response types, with an async client behind the opt-in `fetch` feature. - ARC-89 preview: an offline, byte-exact Asset Metadata Box codec, flag bytes, domain-separated hash, and registry constants (marked unstable). The offline core links no HTTP client; the ARC-74 client and metadata fetch ride algonaut_nft's `fetch` feature. The umbrella re-exports it as `algonaut::nft` behind an additive, default-off `nft` feature (plus `nft-fetch`), so existing builds are unchanged. No backward-compatibility guarantees apply while the crate stabilises.
ceadcb90
feat/algonaut-nft
19/2,663 ++ 0 --
Merge 4ec3185d16784b3e9b62ebb6473ab00bd578d6e5 into bf88db5072f7a4ca3a38f50f6cfb01658e62dfec
5048517f
pull/6639/merge
54/6,120 ++ 1,583 --
Merge 3683437926e5ca0d20e7a643883cca4eaa6aafa6 into 9783a67c2bfbde6bf00c871a7209ffc50e5cd670
1e60c290
pull/39/merge
9/531 ++ 178 --
Merge 749ca9c3327087b04bd5c9cbb4f03078546c0c07 into e56f6efde0b906a499824f49b7c6b6c1a330e60d
4d1c78a2
pull/383/merge
2/85 ++ 28 --
fix: catch recursive types that would not be caught as they generate a diferent type in each step of the infinite expansion
749ca9c3
forbid-cyclic-structs
1/51 ++ 26 --
Merge 921119e579ca3392d473d42914abb49a4b627e5d into bf88db5072f7a4ca3a38f50f6cfb01658e62dfec
6b359d7e
pull/6617/merge
16/41,030 ++ 2,059 --
Merge 4f41c6e0ad4ff02458bc53508ba728122b4db075 into bf88db5072f7a4ca3a38f50f6cfb01658e62dfec
1b699b0a
pull/6641/merge
2/3 ++ 3 --
Merge 84d20e219ff05d5b32e06fb62b049f6678980b52 into bf88db5072f7a4ca3a38f50f6cfb01658e62dfec
0ded8a70
pull/6631/merge
4/553 ++ 11 --