Chain Lens — 取引を読んで学ぶ

取引を読む

Ethereum のテストネットに記録された取引を1本読み、何が平文で残り、何が暗号化され、何が載っていないのかを仕分けます。

このページは読むだけです

  • ウォレットの接続は要りません
  • 秘密鍵を入力する欄はありません
  • 対象は Sepolia テストネットのみです

本書で扱う取引:

この取引そのものの情報

「誰が・どこへ・いくら払って送ったか」という、封筒に書いてあるような情報です。中身が何であっても必ず記録されます。中身にあたる記録は、下の「イベントの全記録」です。

一般の explorer で見る:EtherscanBlockscout
結果
成功
送信者
0xa60ef4e6e8f821f3bd5d42f8067bd5d4a96e0cef
鍵を持つアカウント(人)

publish を実行した人。ポータルでウォレット接続していたアドレス

取引を送れるのは鍵を持つアカウントだけです。契約は自分から送れません。

宛先
0x04ecc497632847529fc431ba780ffc573fe4ac47
契約(プログラム)コード 45 バイトこの取引で新設

この publish で作られた Data NFT。資産そのもの。DID はこのアドレスから計算される

この取引が呼び出した相手です。1本目は「工場」、3本目は「作られた NFT 自身」——宛先が変わることに注目してください。

ブロック番号
11,482,339

その取引が入ったブロックの通し番号です。Sepolia は約12秒に1つ進みます。番号が取引の順序を決めます。

使ったガス
516,615 × 2.574311997 Gwei

ガス量は計算と保存の重さ、単価はそのときの混み具合で決まります。

手数料
0.001329928192330155 ETH

ガス量 × 単価。データを登録するだけで、公開者の ETH が減ります。

送ったデータ
3,940 バイト

ポータルがチェーンに送った中身です。暗号化済みの DDO もここに載っています。

出たログ
2

1本の取引から、いくつでも記録が出ます。内部で次々に別の契約が呼ばれるためです。

DDO(資産を記述する文書)を見る

チェーンに載っているのは暗号化された塊だけです。中身を見るには、記録された復号担当ノードに問い合わせるしかありません。このカードは、その依存関係をそのまま示します。

資産の識別子(DID)
did:op:89e6023a8609bdfc1f28e99b65955683d7d4ddd07fc783de1549a9b8112befb1

NFT のアドレスとチェーン ID から機械的に決まります。誰かが採番したものではありません。

導出元の NFT
0x04ecc497632847529fc431ba780ffc573fe4ac47
契約(プログラム)コード 45 バイトこの取引で新設

この publish で作られた Data NFT。資産そのもの。DID はこのアドレスから計算される

記録された復号先
http://16.192.66.21:8001
記録された復号先に到達できません。サーバが止まっているか、接続を許していないかです。この状態では、資産の題名もライセンスも誰にも分かりません。チェーン上の記録は無傷なのに、です。

送ったデータの中身

ポータルがチェーンに送った引数です。バイト列としては誰でも読めますが、送る前に暗号化されていれば中身までは読めません。同じ「送ったデータ」でも、①はすべて平文、③は大半が暗号化された DDO です。

呼んだ関数
setMetaDataAndTokenURI
metaDataState
0
metaDataDecryptorUrl
http://16.192.66.21:8001
metaDataDecryptorAddress
flags
0x02
data
0x04009ab5bfa68348330fb182c0e8a8eb859ffdc6 ← 2,872 バイト。中身は読めません
metaDataHash
0xc717a9eb053d7b23db3da5b30a26ba4c57a19939e697fc52c10691b055d5d78b
tokenId
1
tokenURI
data:application/json;base64,eyJuYW1lIjoiUFggRGF0YSBORlQiLCJzeW1ib2wiOiJQWC1ORlQiLCJkZXNjcmlwdGlvbiI6IkRhdGEgTkZUcyBhcmUgdW5pcXVlIGRpZ2l0YWwgYXNzZXRzIHRoYXQgcmVwcmVzZW50IHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgeW91ciBkaWdpdGFsIHNlcnZpY2VzLiIsImV4dGVybmFsX3VybCI6Imh0dHBzOi8vY2xpb3gub3JnL2Fzc2V0L2RpZDpvcDo4OWU2MDIzYTg2MDliZGZjMWYyOGU5OWI2NTk1NTY4M2Q3ZDRkZGQwN2ZjNzgzZGUxNTQ5YTliODExMmJlZmIxIiwiYmFja2dyb3VuZF9jb2xvciI6ImZmZmZmZiIsImltYWdlIjoiL2ltYWdlcy9jbGlveF90ZXh0LnN2ZyJ9
metadataProofs
[]

この取引の送ったデータには、暗号化された塊が含まれています。

もし保管領域に書いていたら

この取引で最も大きいデータは、契約の保管領域ではなくイベントログに置かれています。同じ量を保管領域に書いた場合と比べます。

書き方単価ガス
イベントログ(実際の方式)8 gas / byte24,101
保管領域20,000 gas / 32 bytes1,989,000

2,872 バイトを保管領域に書くと、ログの約 82.5 倍かかります。

単価の出典: Ethereum Yellow Paper / EIP-2929。SSTORE はゼロ→非ゼロの場合。

tokenURI の中身

tokenURI
data:application/json;base64,eyJuYW1lIjoiUFggRGF0YSBORlQiLCJzeW1ib2wiOiJQWC1ORlQiLCJkZXNjcmlwdGlvbiI6IkRhdGEgTkZUcyBhcmUgdW5pcXVlIGRpZ2l0YWwgYXNzZXRzIHRoYXQgcmV…
形式
データ URI(チェーン内に埋め込み)

外部を指していません。JSON そのものがチェーン上に埋め込まれています。

デコード結果
{
  "name": "PX Data NFT",
  "symbol": "PX-NFT",
  "description": "Data NFTs are unique digital assets that represent the intellectual property of your digital services.",
  "external_url": "https://cliox.org/asset/did:op:89e6023a8609bdfc1f28e99b65955683d7d4ddd07fc783de1549a9b8112befb1",
  "background_color": "ffffff",
  "image": "/images/cliox_text.svg"
}

何が残ったかの仕分け

① 平文で誰でも読めるもの

  • MetadataCreated.createdBy = 0xa60eF4E6E8F821F3bd5D42f8067BD5d4a96e0CEf
  • MetadataCreated.state = 0
  • MetadataCreated.decryptorUrl = http://16.192.66.21:8001
  • MetadataCreated.flags = 0x02
  • MetadataCreated.metaDataHash = 0xc717a9eb053d7b23db3da5b30a26ba4c57a19939e697fc52c10691b055d5d78b
  • TokenURIUpdate.updatedBy = 0xa60eF4E6E8F821F3bd5D42f8067BD5d4a96e0CEf
  • TokenURIUpdate.tokenID = 1
  • calldata.metaDataDecryptorUrl = http://16.192.66.21:8001
  • calldata.flags = 0x02
  • calldata.metaDataHash = 0xc717a9eb053d7b23db3da5b30a26ba4c57a19939e697fc52c10691b055
  • calldata.tokenId = 1
  • calldata.metadataProofs = []

② 載っているが読めないもの

  • MetadataCreated.data2,872 バイト
  • calldata.data2,872 バイト

③ そもそも載っていないもの

データ本体はチェーンに載りません。上の②が復号できれば題名や URL が現れますが、復号できるのは指定されたサーバだけです。チェーンだけを見ても、これが何の資料なのかは分かりません。

イベントの全記録

1 個の契約が関わっています。

[0]MetadataCreated0x04ecc497632847529fc431ba780ffc573fe4ac47
契約(プログラム)コード 45 バイトこの取引で新設

この publish で作られた Data NFT。資産そのもの。DID はこのアドレスから計算される

createdBy
0xa60eF4E6E8F821F3bd5D42f8067BD5d4a96e0CEf
鍵を持つアカウント(人)

publish を実行した人。ポータルでウォレット接続していたアドレス

state
0
decryptorUrl
http://16.192.66.21:8001
flags
0x02
data
0x04009ab5bfa68348330fb182c0e8a8eb859ffdc6 ← 2,872 バイト。中身は読めません
metaDataHash
0xc717a9eb053d7b23db3da5b30a26ba4c57a19939e697fc52c10691b055d5d78b
timestamp
1786650612
blockNumber
11482339
[1]TokenURIUpdate0x04ecc497632847529fc431ba780ffc573fe4ac47
契約(プログラム)コード 45 バイトこの取引で新設

この publish で作られた Data NFT。資産そのもの。DID はこのアドレスから計算される

updatedBy
0xa60eF4E6E8F821F3bd5D42f8067BD5d4a96e0CEf
鍵を持つアカウント(人)

publish を実行した人。ポータルでウォレット接続していたアドレス

tokenURI
data:application/json;base64,eyJuYW1lIjoiUFggRGF0YSBORlQiLCJzeW1ib2wiOiJQWC1ORlQiLCJkZXNjcmlwdGlvbiI6IkRhdGEgTkZUcyBhcmUgdW5pcXVlIGRpZ2l0YWwgYXNzZXRzIHRoYXQgcmVwcmVzZW50IHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgeW91ciBkaWdpdGFsIHNlcnZpY2VzLiIsImV4dGVybmFsX3VybCI6Imh0dHBzOi8vY2xpb3gub3JnL2Fzc2V0L2RpZDpvcDo4OWU2MDIzYTg2MDliZGZjMWYyOGU5OWI2NTk1NTY4M2Q3ZDRkZGQwN2ZjNzgzZGUxNTQ5YTliODExMmJlZmIxIiwiYmFja2dyb3VuZF9jb2xvciI6ImZmZmZmZiIsImltYWdlIjoiL2ltYWdlcy9jbGlveF90ZXh0LnN2ZyJ9
tokenID
1
timestamp
1786650612
blockNumber
11482339