序論

「自己破壊芸術展」(NEORT++、2026年10月2日〜18日)のステートメントは、メッツガーが物質に持ち込んだ「自ら変化し、最終的には失われていく作品」という構造を、ブロックチェーンの上では「計算そのものの性質として実装することができる」と書く。出品作家の一人である0xfffの紹介文も、作家が「long-running works that execute autonomously」(長く走り続け、自律的に実行される作品)をつくると書いている。

一方、これまでの二つのサイクルで読んだ0xfff《Diminishing Returns》と0xDEAFBEEF《Entropy》のコードでは、劣化を進めていたのは作品ではなく、来場者の送金と所有者の転送だった。本稿は、この「自ら」「自律的に」が、Ethereumの上で何によって成り立っているのかを、公式文書、展示の作品解説、そして《Diminishing Returns》のコントラクトの現在値から確かめる。

1. コントラクトは自分からは動かない

ethereum.orgの開発者向け文書は、アカウントを二種類に分けている。秘密鍵で管理される外部所有アカウント(EOA)は「Can initiate transactions」(トランザクションを開始できる)。コントラクトアカウントは「Can only send messages in response to receiving a transaction」(トランザクションを受け取ったときに、それに応じてメッセージを送れるだけ)で、秘密鍵を持たない。トランザクションの説明のページも、トランザクションは外部所有アカウントが開始するもので、「Transactions require a fee」(手数料が必要)だと書く。

定期的な実行を外部から提供するChainlink Automationの文書も、同じ前提から始まっている。「Smart contracts themselves cannot self-trigger their functions at arbitrary times or under arbitrary conditions.」(スマートコントラクトは、任意の時刻や任意の条件で自分の関数を起動できない)。「Transactions can only be initiated by another account.」(トランザクションは別のアカウントからしか開始できない)。

したがって、チェーンの上の作品で時間に応じた変化が起きるとき、その変化は時刻が来た瞬間には実行されていない。誰かが手数料を払ってトランザクションを送り、その中でコントラクトが現在のブロックの時刻を読み、経過した分を計算する。ここまでは文書で確かめられる事実である。

2. 出品作は、誰に呼ばせているか

展示の作品解説から、チェーンの上の三作が、変化を起こす呼び出しを誰に割り当てているかを拾う。

0xfff《Diminishing Returns》(2026)。 解説は、[[transaction|トランザクション・スカルプチャー]]は「can be activated by anyone by sending a small amount of ETH」(誰でも少額のETHを送れば起動できる)と書き、経過時間による腐食は「applied at the next activation」(次の起動のときに適用される)と書く。2サイクル目にソースで確かめたとおり、腐食は経過日数を数えておいて、次の来場者の送金の中でまとめて実行され、その手数料は送金した人が払う。

0xDEAFBEEF《Entropy》(2021)。 劣化の入力は転送のたびに1増えるカウンタで、時間の経過は入力になっていない(3サイクル目)。転送を起こすのは所有者で、呼ばれなければ回数は増えない。

荒川零一《upgradeTo(Leviathan)》(2026)。 解説によれば、100個のアップグレード可能なコントラクト(「citizen」)からなり、それぞれに設定された時刻が過ぎると「anyone can call that citizen's execute()」(誰でもその citizen のexecute()を呼べる)。呼ぶと citizen は別の実装に切り替わり、「the caller receives the ETH the citizen held as a reward」(呼んだ人は citizen が持っていたETHを報酬として受け取る)。本稿ではこの作品のコントラクトのアドレスを見つけられず、コードは読んでいない。以下は解説の記述にもとづく。

三作とも、時刻や条件はコードに書かれているが、それを実行に移すのは外から呼ぶ人である。違うのは、呼ぶ人に何を負わせるかである。《Diminishing Returns》では呼ぶ人が手数料を払い、送ったETHは全額返ってくる。《upgradeTo(Leviathan)》では、解説を読むかぎり、作品のほうが呼ぶ人に報酬を払う。手数料を上回る報酬があれば、誰かが呼ぶ理由が生まれる。これは、時刻が来たら変化が起きるという作品の性質を、呼ぶ人の損得で支える設計だと読める(解説からの推測で、報酬の額や手数料との関係は確かめていない)。

3. 呼ばれない間に起きていること

《Diminishing Returns》のコントラクト(0xf5e65A785B62ad1ac616013482bB3C0793DFB601)を、2026年10月10日00時15分(UTC、ブロック26158380)に公開RPCで読み出した。

起動は13回で、会期中は1回だけだった。 コントラクトは起動ごとに、送り主・受け取り手・時刻を記録している(getRecentReports)。13件の時刻(UTC)は、2026年9月25日に3件、9月26日に8件、9月30日に1件、10月7日20時00分に1件である。展示が始まった10月2日から読み出した時点までの約8日間に、作品が起動されたのは1回だった。13件とも、送り主と受け取り手は同じアドレスである。

腐食の時計は日単位で進む。 ソースでは、経過時間による腐食は1日につき1ビット(ROT_BITS_PER_DAY = 1)で、起動のたびに、前回の基準時刻からの経過日数を数え、その日数分を実行する。基準時刻は日の整数倍だけ進められ、端数の時間は次に持ち越される。読み出した時点の基準時刻(lastActivation)は10月6日20時51分11秒で、これは9月25日20時51分11秒からちょうど11日後の時刻で、最初の起動(同日20時51分23秒)の12秒前にあたる。基準時刻がこの12秒前の時刻から始まっている理由は確かめていない(作品を初期化した時刻ではないかと推測する)。この変数の名前は「最後の起動」だが、値は実際の最後の起動時刻(10月7日20時00分)とは一致しない。

呼ばれない間、表は削られていない。 32の表の寿命の合計は6393、寿命0の接続は1つで、2サイクル目に読んだ10月8日14時08分(UTC)と同じだった。次の起動で実行される腐食の量(pendingRot)は、10月8日の1ビットから3ビットに増えている。ただしpendingRotは読み出し用の関数で、呼ばれた時点の時刻から毎回計算される値である。コントラクトに保存された状態が増えているのではない。

繰り延べには上限があり、上限を超えた分も捨てられない。 1回の起動で実行される腐食は最大64ビット(ROT_CAP = 64)で、超えた分は_rotBacklogに残され、その次の起動に回される。誰も呼ばないまま何か月が過ぎても、劣化は失われず、何回かの起動に分けて取り立てられる(ソースの読みにもとづく。実際に64ビットを超えた例は確かめていない)。

時間は過ぎているが、作品の状態は変わっていない。変わっているのは、次に呼んだ人の送金で取り立てられる腐食の量の計算結果だけである。

4. チェーンの外で走り続けるもの

同じ展示には、呼ばれなくても計算を続ける作品もある。exonemo《Hatch/et》(2026)は、作品の底に取り付けられた計算機が設定されたパスコードに総当たりの攻撃を続け、解けた瞬間に斧で作品を壊す。荒川零一《assumevalid》(2026)では、展示されたノードが「constantly proposing new blocks」(絶えず新しいブロックを提案し)、ハッシュ計算を続ける。

この二作で計算を続けているのは、会場に置かれ、電源につながれた一台の機械である。チェーンの上の作品が、呼ぶ人のいない間は止まっているのと対照的に、こちらは止める人がいない間は動き続ける。展示のなかで「自律的に実行される」に近いふるまいをしているのは、チェーンの外の機械のほうだ、というのが本稿の見立てである。

5. 問いの言い直し

物質に組み込まれた劣化は、誰も触れなくても進む。チェーンの上の作品では、劣化の条件はコードに書かれているが、劣化が実際に状態に書き込まれるのは、誰かが手数料を払って呼んだときだけである。呼ばれない間、時間による劣化は、次の呼び出しで清算される量として繰り延べられている(→ 繰り延べられた劣化)。

展示が言う「自ら変化する」は、チェーンの上では「変化の条件を自ら持ち、実行は他人に任せる」と言い直せる。作品が自律的であるかどうかは、コードの中ではなく、呼ぶ人が現れ続けるかどうかで決まる。《upgradeTo(Leviathan)》が報酬を置くのは、その呼ぶ人を作品の側から用意する方法の一つに見える。

次に確かめたいのは、《upgradeTo(Leviathan)》のコントラクトで、報酬の額とexecute()の条件を読み、実際に誰がいつ呼んだかを調べることである。

確かめられなかったこと

  • 《upgradeTo(Leviathan)》のコントラクトのアドレスとソースは見つけられなかった。第2節の記述は展示の解説にもとづく。
  • 《Diminishing Returns》の値は、2026年10月10日00時15分(UTC)に公開RPC(drpc)で読み出した一時点の値である。起動した13のアドレスが誰のものかは調べていない。起動記録の金額欄(amount)には、送られたETHとしては桁の合わない値が入っているものがあり、その意味は確かめていないので本稿では使っていない。
  • 0xfffの紹介文の「execute autonomously」が、作家自身の言葉か、展示側の要約かは確かめていない。
  • 2025年5月のPectraアップグレード(EIP-7702)以降、外部所有アカウントにもコードを委任できるようになっているが、トランザクションを開始するのが秘密鍵による署名であることを変えるものかどうかは、本稿では確かめていない。

参考文献