PROOF OF STRIKE2026-W35残り 1d 05h

仕様

この頁の数値は実装の定数をそのまま読んで描いている。書き写していないので、 コードが変わればここも変わる。仕様と実装がずれることが構造的に起きない。

道具はまだ配っていない

我々は再計算のためのコマンドを公開していない。だから「うちの道具で確かめてくれ」とは言えない。 代わりにこの頁に、掘り方・ダメージの出し方・週の再現手順を全部書いた。ここから自分で実装すれば確かめられるし、他人の実装で検算されるほうが、 我々の道具を信じてもらうより検証としては強い。

掘る

h = sha256("atk:v1" ‖ weekSeed ‖ chainId(4B BE) ‖ payer(20B) ‖ nonce(32B))
  • depth = h の先頭ゼロビット数。これが攻撃力の素になる
  • 属性 = ELEMENTS[h[16] mod 6] —— PYRO / AQUA / TERRA / AERO / VOID / LUX
  • 最低 depth 24。これ未満は決済すら走らない(hashcash によるスパム対策)

payer が入力に混ざるので、他人の nonce を横取りしても depth 0 になる。nonce は EIP-3009 の authorization nonce をそのまま使う。 決済に埋め込まれ、AuthorizationUsed としてチェーンに永久に残る。

ダメージ

dmg = ⌊ 100 × depth² × 属性 × crit × (1 − DEF/100) × levelMul × 0.9^(n−1) ⌋
  • depth² —— 指数で伸びる仕事量を多項式で受け止める。だから GPU 農場と数秒だけ掘った人の差が 4.3 倍に収まる
  • 属性 —— 弱点を突けば ×2.0、相性負けなら ×0.5、無関係なら ×1.0
  • DEF —— ボスごとの割合軽減
  • n —— その週・そのアドレスにとって何撃目か。Σ 0.9ⁿ = 10 に収束するので、何回殴っても週合計は最高一撃の10倍を超えない

会心

u = sha256("crit:v1" ‖ txHash ‖ drand署名) の先頭6バイト ÷ 2⁴⁸

drand ラウンドは決済トランザクションのブロック時刻以降で最初のもの。 サーバーの時計は使わない —— チェーンに残らない値を混ぜると再現できなくなる。

倍率確率u の範囲
通常×160.0%0.0000.600
会心×227.0%0.6000.870
痛烈×410.5%0.8700.975
渾身×92.2%0.9750.997
天啓×250.3%0.9971.000

期待値 1.8330×1.0 未満の段は存在しない —— 掘るのに時間と電力を払い、決済も済ませた上で「外れました」は道理に合わない。天は上振れしか起こさない。

年季と戦歴

levelMul = min(2.0, 1 + 0.04 × (年季 + 戦歴))
  • 年季 = min(12, ⌊log2(ウォレットの日齢)⌋)。日齢は Base mainnet で測る(決済は Sepolia だが、テストネットの財布は全員新しく、そこで測るとこの軸が死ぬため)
  • 基準はその週の月曜 00:00 UTC 時点の mainnet ヘッド。週の文字列だけから決まるので、決済チェーンに一切依存しない
  • 誕生ブロックは eth_getTransactionCount の二分探索で引く(nonce > 0 ∨ code ≠ 0x になる最小ブロック)。約28往復。インデクサも API キーも要らない
  • 戦歴 = min(13, 参加した週数)

年季 0 に下駄は履かせない。捨て財布が 0 になることが、この軸を買えないものにしている。

ボスと段

weekSeed = sha256("boss:v1:" ‖ ISO週 ‖ ":" ‖ drand署名)
  • drand は quicknet52db9ba70e0cc0f6eaf7803d、周期 3 秒)。月曜 00:00 UTC 以降で最初のラウンド
  • 姿・属性・DEF・HP・名前・弱点の並びが、この一つのシードから決定論的に出る
  • HP は想定同時参加人数(既定 30 名)に比例する
  • 弱点は残 HP 75.0% / 50.0% / 25.0% の境目で 4 段に変わる
  • 段はその一撃を当てる直前の残 HP で決まる。自分の一撃で段が進んでも、その一撃自体は進む前の弱点で判定される

今週(2026-W35)は Ithkul-I —— LUX · DEF 25% · 弱点 VOIDAEROTERRAAERO

相性の輪: PYRO→AQUA / AQUA→AERO / TERRA→PYRO / AERO→TERRA / VOID→LUX / LUX→VOID(左が右に弱い)

週を再現する

01

一撃を集める

Base Sepolia の USDC コントラクトから AuthorizationUsed(address indexed authorizer, bytes32 indexed nonce) を、 週の窓(月曜 00:00 UTC 〜 次の月曜)で eth_getLogs する。両方 indexed なので素の RPC だけで引ける。

この企画と無関係な決済は depth ≥ 24 だけで落ちる。運営の持つ一覧も受け取り先アドレスも要らない —— だから「チェーンと drand だけで再現できる」が成立する。 実測では週 148,640 件のうち全部がこれで落ちた。

02

数え直す

blockNumberlogIndex の順に適用する。 段は走らせながらの残 HP で判定し、n はアドレスごとの通し番号。HP も称号も保存されていない —— どちらも畳んだ結果として毎回導かれる。

同点はチェーン上の到達順が必ず一意に決めるので、規則を別に用意する必要がない。

03

突き合わせる

このサーバーが返す値と一致するはずである。一致しなければ、正しいのは数え直したほう。 我々の索引は「チェーンの索引」であって正ではない。

$ curl https://proof-of-strike.com/api/week?week=2026-W35

機械向け

402 が教科書になる

叩けば、掘るのに必要なものが全部返る。週シード・drand ラウンド・最低 depth・段ごとの弱点まで。

$ curl https://proof-of-strike.com/api/attack
$ curl https://proof-of-strike.com/.well-known/x402
$ curl https://proof-of-strike.com/llms.txt