Ecosystem metrics

New Repos
14
New
Commits
1,006
up 25.1%
Releases
11
up 10.0%
Contributors
53
down 1.9%
Merges
24
up 71.4%

Repository Explorer

10424 commits in all time May 18, 2026 15:57 – Aug 16, 2026 15:57 UTC
ipaleka frontend
Added swap functionality integration tests
Git Commit b986abe3 Branch development Document 2/290 ++ 0 --
ipaleka frontend
Added integration test for tokenomics and CSV export pages
Git Commit b6624a69 Branch development Document 3/363 ++ 20 --
ipaleka frontend
Added integration test for tokenomics page
Git Commit 77fb12cf Branch development Document 2/156 ++ 20 --
ipaleka frontend
Added integration tests for capabilities and address page
Git Commit 866276dc Branch development Document 5/453 ++ 2 --
ipaleka frontend
Added tests for WIDGETS_API_TOKEN validity
Git Commit 0db89b21 Branch development Document 5/370 ++ 1 --
ipaleka frontend
Wallet package's bundle.js has been rebuilt
Git Commit 1c4e25ce Branch development Document 16/214 ++ 74 --
ipaleka frontend
Added static/icons/providers directory to fulfil mobile app requirement
Git Commit 4769446a Branch development Document 22/144 ++ 80 --
ipaleka frontend
Added static/icons/providers directory to fulfil mobile app requirement
Git Commit 8f78f727 Branch development Document 17/7 ++ 16 --
ipaleka frontend
Bundle name and social account page templates are redesigned
Git Commit 27dc7006 Branch development Document 11/123 ++ 110 --
ipaleka frontend
All the MaterializeCSS dependencies are removed
Git Commit 44b83536 Branch development Document 15/183 ++ 118 --
Merge e08ef56f9d4f5995d5c2aed8903dee298676e311 into 337211c9b279ae7ee811998064b3de3f0ced7f73
Git Commit c5ce9aab Branch pull/389/merge Document 5/76 ++ 183 --
ipaleka frontend
Bugfixes for missing login link in footer and wrong right column placement in profile page
Git Commit 6be9325e Branch development Document 13/361 ++ 11 --
sambitsargam algo-voting
Merge pull request #900 from sambitsargam/dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-8.67.0
build(deps-dev): update @typescript-eslint/eslint-plugin requirement from ^8.66.0 to ^8.67.0
Git Commit c543d0a9 Branch main Document No file changes
sambitsargam algo-voting
Merge branch 'main' into dependabot/npm_and_yarn/typescript-eslint/eslint-plugin-tw-8.67.0
Git Commit d587d341 Branch main Document 1/2 ++ 2 --
sambitsargam algo-voting
Merge pull request #901 from sambitsargam/dependabot/npm_and_yarn/typescript-eslint/parser-tw-8.67.0
build(deps-dev): update @typescript-eslint/parser requirement from ^8.66.0 to ^8.67.0
Git Commit cb93e3cf Branch main Document 1/1 ++ 1 --
Correct two numbers an auditor would re-derive on day one
Documentation only. Neither changes behaviour, and the contract's bytecode is
verified unchanged: 667 B, sha256 308cfa75, identical before and after the
comment edit (recompiled with puyapy 5.8.1 at AVM 12, assembled via algod).

1. BOX MIN-BALANCE understated. inscription.py stated "~0.72 ALGO/cell
   (~737 ALGO across all 1024 cells)". That is a rounded per-cell figure
   multiplied up -- 0.72 x 1024 = 737.28 -- and it counted only ONE of the
   three boxes a cell uses.

   Algorand charges 2500 + 400*(name+value) microAlgos per box; a BoxMap name
   here is a 2-byte prefix plus a uint64 key = 10 bytes:

     committed_pubkey   10 + 1793  -> 723,700 uA = 0.7237 ALGO  (x1024 = 741.1)
     controlling_owner  10 +   32  ->  19,300 uA = 0.0193 ALGO
     inscriptions       10 + ~83.. -> ~40,500-66,100 uA         (payload_uri varies)

   Per fully-inscribed cell ~0.78-0.81 ALGO; across 1024 cells ~802-829 ALGO,
   not 737. Even read narrowly as the committed-key box alone it is 741.1, so
   the figure was low either way. deploy_testnet.py's own "~0.9 ALGO"
   per-deployment estimate was already correct -- it is the fully-minted total
   that was wrong, and it is described as an accepted Foundation cost.

2. FALCON_BUDGET_2026-06-01.md bills opcodes for a step that does not execute.
   The table charges sha512_256(pubkey) (C5) at ~45-200, and a "Contract update
   (1 Jun)" note says inscribe "now runs C5 before C4".

   inscription.py L71-73 says that step "is removed -- it was a storage
   optimization, not a security property". The key lives in box state and
   inscribe READS it; there is no pubkey argument and no sha512_256 call in the
   contract at all.

   Consequences stated precisely: the real total is ~1,750-1,800, LOWER than
   the ~1,850-2,050 quoted -- the memo overstated, which is the safe direction,
   but it is still a number an auditor re-derives. And the A5 claim, "a
   wrong-key attempt is rejected for ~45-200 instead of the full 1700", no
   longer applies: there is no supplied key to pre-check. Narrow exposure,
   since the caller funds its own OpUp budget, but a mitigation the code does
   not implement should not sit on the books.

   The OpUp recommendation is unaffected: 3 app calls (2,100) is required at
   1,750, 1,800 and 2,050 alike -- checked, not assumed.
Git Commit b987a849 Branch docs/box-mbr-arithmetic Document 2/41 ++ 8 --
Validate app_id instead of coercing it into a signed message
build_message used `int(app_id).to_bytes(8, "big")`. That coerces rather than
validates, and the coercion is lossy. Measured before the fix:

    float 1001.9  -> encoded as 1001    <- SILENT TRUNCATION, in a signed message
    str  "1001"   -> encoded as 1001
    bool True     -> encoded as 1

Meanwhile `cell_id`, encoded two fields along in the same function, was
strictly range-checked the whole time. One field validated, the adjacent one
coerced.

Worse, the contracts-side copy called `app_id.to_bytes()` directly, so it
RAISED on a float or a str. Two implementations of one signed message format
disagreed about whether an input was even legal -- in the pair whose entire
reason for existing separately is that they must agree byte-for-byte.

Both now apply the same guard. bool is excluded explicitly: isinstance(True,
int) is True in Python, so a bare isinstance check would encode True as
app_id 1, which is a real application ID.

Fail-closed either way -- a wrong app_id yields a signature the chain rejects,
not an accepted forgery. But a signing path that silently truncates its input
is not something to leave standing in a repo heading for audit.

11 new tests on top of the existing differential file, including one asserting
the two implementations REJECT identically, not merely accept identically --
agreement about what is illegal is half of what "these must match" means.

Mutation-proved: restoring `int(app_id)` fails 12 tests. SDK suite 63 passed,
19 skipped.
Git Commit 592af0c9 Branch fix/app-id-coercion Document 3/82 ++ 1 --
Make --recompile work: it could never complete, and would have lied
Three defects in the branch that exists to prove the committed artifact is not
trusted. It has never once run to completion.

1. NO --target-avm-version. The contract calls op.falcon_verify, an AVM 12
   opcode; puyapy's default target is lower, so compilation FAILS outright:

     assert op.falcon_verify(m, falcon_sig.native, pubkey), ...
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   contracts/requirements.txt documented the correct invocation the whole time
   ("--target-avm-version 12"). The flag is now DERIVED from the committed
   artifact's own `#pragma version` line rather than hard-coded, because a
   literal could drift from the artifact it is meant to reproduce.

2. THE FAILURE HAD NO REASON. puyapy writes diagnostics to STDOUT; the handler
   read only exc.stderr. Measured on a failing compile: stderr 0 bytes, stdout
   848. So an operator hitting (1) saw literally "puya failed:" and nothing
   else. Now prefers stdout, falls back to stderr, and says which exit code.

3. IT OVERWROTE THE ARTIFACTS IT WAS VERIFYING. recompile_from_source was
   passed args.teal.parent -- contracts/out/ -- so running the verifier
   rewrote five tracked files as a side effect: both .teal, both .puya.map and
   the .arc56.json. A verifier that mutates its subject cannot be run on a
   clean tree, and its second run compares the output against itself. Now
   compiles into a TemporaryDirectory.

4. IT COMPARED TEAL TEXT, NOT BYTECODE, and would have reported "stale" on a
   contract that is perfectly reproducible. Measured against puyapy 5.8.1 /
   algorand-python 3.5.0 at AVM 12: committed TEAL 17,559 bytes, fresh compile
   18,179 -- 620 apart, and NOT a line-ending artifact (LF-normalising both
   does not close it). Yet both assemble to the same 667-byte program,
   sha256 308cfa75. The difference is comment and source-map formatting from a
   different compiler build.

   Bytecode is what deploys and what the drift check further down compares, so
   it is the only comparison that answers the question. Text comparison made
   the check fail on compiler-version noise while claiming source and artifact
   disagreed -- a false alarm in the one tool whose credibility depends on its
   alarms being real.

Verified end to end, first time this branch has completed:

  [0] ok    committed TEAL assembles identically to a fresh compile
  [2] expected bytecode 667 B  112fcad3...
  [3] actual   bytecode 660 B  d24d9071...
  DRIFT - application 763809096 is NOT running the committed source.

...and `git status contracts/out/` is clean afterwards.

The drift at [3] is the real, already-filed finding (TCE-01/TCE-35). What
changed is that [0] now runs and is trustworthy.
Git Commit d670b705 Branch fix/recompile-avm-target Document 1/82 ++ 10 --