2026-05-17

週次オープンソース:ClawdWallet、univdreams、origami、pure-Go 署名

横方向に広がった週。Solana ウォレットが公開され、汎用デコンパイラ/ コンパイラが最初の crate を出し、突然分子動力学エンジンが現れ、 Windows コード署名が Pure-Go で組み直された。

ClawdWallet:TibaneLabs が公開

TibaneLabs は新しい org。 フラッグシップは Solana Seeker 向けのノンカストディアル ウォレットで、マルチチェーン(Solana / EVM / Bitcoin)、MPC キー、 DEX アグリゲータ swap、dApp ブラウザ付き。今週、Colosseum ハッカソン への TibaneLabs のエントリとして、二つの部品でオープンソース化 された。

TibaneApp は Flutter のフロントエンド。ビルド 39 が「Initial open-source release」で、その後 1 週間で:WatchAsset 承認シート、NFT ビューア + トークン CRUD 画面、BTC アドレス形式ピッカー、swap 周りの 仕上げ(出力トークン自動追跡、USD 表示)、ステーキング詳細 (コピー可能アドレス)、About 画面に libwallet バージョン表示、 URL バー非 URL 入力の DuckDuckGo フォールバック、GB ユーザー向け の UK リージョンゲート(swap / staking 非表示)まで載った。

clawdwallet は Go で書かれたエージェント CLI:TSS-over-Spot、Solana TX 構築、x402、 MCP stdio。週半ばに「ClawdWallet Stage 1」用にリファクタ — エージェント ペアリングのディープリンク、peer JSON タグを tss-lib protobuf に 合わせる、REST クライアントを Crypto/WalletSign:signByPolicy 経由に、tibane:// URL スキーム(ターミナルで Unicode QR として 表示)でペアリングハンドシェイク。

libwallet 側も それに合わせて API を増やした:v0.4.21 → v0.4.32 で Wallet:initiateKeygenWallet:joinSignClawdWallet:pair (Stage 1 ディープリンク検証)、ClawdWallet:createAgentWallet、 Helius DAS 経由の Solana SPL 自動検出、wltswap の改善(プロバイダ ごとの quote 試行、Jupiter quote 失敗時のリトライ)、契約ラベル の curated レジストリ、Network.AddressUrl + 解決済みブロック エクスプローラ、maxSendableestimateGasAmount.MAX センチネルに切り替え。

univdreams:汎用デコンパイラ/コンパイラ

univdreams — 「ELF / PE / Mach-O / 6502 を、人が読める .ud ソース言語を 通してバイト同一で往復させる」が、今週最初の crates.io リリースを刻んだ(v0.1.0 → 0.1.3、日曜時点)。

由来は「容器を超えて育ったコード」だ。エミュレータとバイナリ 解析の機構はもともと oxideav-vfw の中で育っていたが、 「Video for Windows のシム」と呼ぶには大きくなり過ぎた。今週、 コードはこのワークスペースに切り出され、oxideav-vfw のほう が ud-* crate に依存する側になった。

切り出し後の構成:

  • ud-format — PE / ELF / Mach-O / raw の統一フロントエンド (PE は DOS + optional ヘッダを構造化フィールドにパースして、 from_parts でバイト同一にリビルド)。
  • ud-translate — compile + decompile(古い ud-compile / ud-decompile をマージしたもの)。
  • arch-x86 — RIP 相対エンコード、nop [mem]push imm、 間接 call / jmp 対応のアセンブラ/ディスアセンブラ。
  • ud-emulator — Pure-Rust i386 + PE + Win32 エミュレータ (oxideav-vfw の中にあった部分そのもの)。コーデック コーパスのハーネス:実 DLL(Lagarith / MagicYUV)に対する ICOpen トレースプローブ、ud encode / ud decode から 叩く ICCompress / ICDecompress。kernel32 / msvcrt スタブ、 序数インポート解決、FWAIT、Sandbox の上に FFI 風の Guest レイヤ。
  • ud-cliud analyze はサンドボックスで PE32 DLL を走らせて 命令予算 + JSON 解析レポートを出す。コーデック調査用に ud vfw … 名前空間。

切り出したことで、隣接モジュールの形を歪めずに育てられるよう になり、副産物として VfW 以外の用途も自然に手に入った:任意の PE / ELF / Mach-O バイナリを対象にした汎用デコンパイラ、そして 往復可能な .ud ソース言語。

origami:Rust の分子動力学

origami が今週 ふいに現れた。Rust によるレプリカ交換分子動力学(REMD)で、 実物のフィクスチャに対して実際にフォールド試行を走らせて いる。

1 週間で出てきた見出し:

  • Chignolin — REMD で 1.43 Å Cα RMSD。プロジェクトの過去 最良。
  • Trp-cage — 3.31 Å Cα RMSD。Trp-cage の最良フォールド。
  • Villin — 1 ns × 8 レプリカで 6.14 Å、5 ns × 8 レプリカ の長い走りで 4.25 Å min。
  • インスリン(2HIU) — chain-aware Structure 型を用意して マルチチェーンフォールド試行を配線。
  • Crambin(1CRN) — フィクスチャ + ジスルフィド結合を覆う native-MD 受け入れテスト。

支える機構:Kabsch-Sander DSSP の H 結合判定(Ramachandran フォールバック付き)、origami analyze の残基ごとの二次構造、 凝集型 single-linkage トラジェクトリクラスタリング(クラスタ ごとに代表 PDB 1 本を書き出し)、SHAKE で X-H 制約 → dt = 2 fs で 2 倍のスループット、SoA ノンボンドカーネルと SASA / GB Born 半径積分の Verlet 隣接リストキャッシュ(SASA 力は 5.3 倍)、rayon 並列 REMD(コア利用率 5-6 倍)。RNA 側も 入った:Nucleotide 型と base ごとの原子トポロジ、RNA 対応の PDB リーダ、NeRF 拡張の RNA バックボーン + リボース鎖 ビルダ。

これは個人的な興味で進めているプロジェクト。DNA は機械語の ように読める、と長らく思っていた。タンパク質はその DNA が 組み立てる側の出力で、出力を理解しないことには、いずれ DNA そのものをいじるところには行けない。

authenticode + gosigner:Pure-Go Windows 署名

Windows PE ファイル署名のために長年使われていた osslsigncode シェルアウトを、二つの新 repo で置き換えた。

authenticode はライブラリ:Pure-Go の Authenticode PE 署名で、 osslsigncode と等価な SignerInfo 属性、optional ヘッダの CheckSum 計算、SPC_RFC3161_OBJID の下に TSA トークンを 入れ子、CI には fuzz + TSA スタブ + 署名マトリクスのテスト スイート。

gosigner はリモート 署名側:Spot 越しに hsm.Key + authenticode を組み合わせ、 signreq -name / -url フラグで SpcSpOpusInfo のプログラム名 + URL を流し込む。署名デーモンは osslsigncode を呼ばなく なった——すべてのバイトが crypto.Signerencoding/asn1 を通る。

goro:VM 正しさ + パフォーマンス

W19 に着地した VM が、今週は PHP の現実のエッジケースに追いつく 週になった。コミットは新しい op、ファストパス、そしてリグレッ ション群(PHP のバグ番号 bug53511bug26639bug60598bug79784 など)が浮き彫りにする個別バグの修正の混合。

  • AST デリゲートフォールバック — 未知の callee で書き換え 可能引数を持つ関数呼び出し、NoDiscard 付きの式文、書き 換え可能引数の間接呼び出し、参照代入($b = &$a)。
  • スロット安全性解析 — 型付き return、include / require / evalclass const アクセスがある関数本体を スロット安全外とマーク。arraySetLocal で外部スロット変更 を検出。
  • バグ駆動修正 — catch 変数の再バインドで __destruct 発火(bug53511)、ローカル代入で新規 ZVal を確保(bug26639)、 IterateRaw 内と FuncContext.Release でハッシュ値を Dup しない(bug60598)。
  • ファストパスOpDiv / OpMod / OpBitAnd/Or/Xor / OpShl / OpShr の int-int パス、 OpJmpIf{False,True,FalsePeek} の bool パス。
  • 境界での型チェック — オブジェクト / 配列のビット演算 オペランド、配列キー、数値でない文字列オフセットキーで TypeError。文字列コンテナの数値文字列オフセットを int に 変換。未初期化ローカルへの ++ / -- で未定義変数警告。 foreach イテレータを多段 break / continue でアンワインド。

今週その他

  • minlz-rs v1.1.0 — klauspost/compress/s2 の手書きアセンブリ (encodeBlockAsm{8B,10B,12B,4MB})の残りを Rust に移植 完了。移植中に正確性バグ 2 件を発見。README に Rust と Go の正直な単一スレッド比較。
  • oxideav-vfw — state surface + forensics を r70 まで。今は切り出された univdreams ワークスペースの ud-emulator を取り込む形になった (上記)。
  • oxideav-av1vp9h264h266 — エン コーダラウンド継続。
  • oxideav-aacoxideav-cinepakoxideav-audio-filteroxideav-image-filter — 細かい改善。
  • oxideav-mov — QuickTime コンテナ、今週入った。
  • oxideav-fbx — Autodesk FBX。W19 で入った 3D アセット sibling 群に合流。
  • oxideav-gif — GIF も入った。

来週

ClawdWallet のペアリングフローを実機経由で通しで動かす。 univdreams は VfW のコーデックデコードに継続投入。origami は もう一段難しいフォールドターゲットに向ける。