コンテンツへスキップ
0%

内部トランザクション:ユーザーにすべての仮想通貨トランザクションを通知する

著者: Elan Halpern

最終更新日: 2021年3月30日1分で読めます

Alchemy Notifyスイートは、_すべて_のETHおよびToken transfersの通知に対応しました。最新機能として内部(スマートコントラクト)トランザクションの通知も追加され、ユーザーは自分のトランザクションのあらゆる段階を完全に把握できるようになりました。

Ethereum Address Activity通知の概要については、こちらのブログ記事をご覧ください。

内部トランザクションとは

My Ether Wallet DAppのモバイルでプッシュ通知を受け取るユーザーのイラスト。
Alchemy Notifyを使うと、ユーザーはアプリケーション内部のトランザクションについてプッシュ通知を受け取れます。

Internal Transaction Notification

内部トランザクションとは何かを理解するには、一歩下がってEthereumにおけるトランザクションの種類を見るのが有効です。トランザクションはEthereumチェーンへの状態変化であり、データを読み取るのではなく、データをチェーンに_書き込む_ものです。

Ethereumで発生しうる状態変化はいくつかありますが、ユーザーが最も気にかけるのは多くの場合トランザクションです。ユーザーに自分のトランザクションを通知するために、開発者はAddress Activity notificationsを利用できます。これはtransfers(2つのEthereumアカウント間での価値の交換)を監視するものです。

Ethereumには3種類のtransferがあります。

ETH transfers

ETH transfersは、Ethereumのネイティブ通貨を使う最も基本的なタイプのトランザクションです。

transferの例: RishubがPaulに0.5 ETHを送る。

これを取得する方法は、新しいブロックごとにトランザクションオブジェクトをスキャンすることです。

Token (ERC-20およびERC-721) transfers

Token transfersには、ERC-20トークンまたはNon-fungibleなERC-721トークン(NFT)に関連するすべてのtransferが含まれます。

transferの例: Omarが取引所(スマートコントラクト)または別のユーザーから10 AAVEを購入する。

これらのtransferを取得する通常の方法は、対象のtokenコントラクトのevent logsを調べることです。

Internal transfers

Internal transfersとは、送信元(fromAddress)が内部(スマートコントラクト)アドレスであるEth transfersのことです。これにはスマートコントラクトが別のスマートコントラクトにEthを送る場合や、スマートコントラクトが外部アドレスにEthを送る場合が含まれます。

transferの例: Internal transfersは非常に複雑ですが、開発者やユーザーにとっては自分のお金がどこから始まりどこに行き着くのかが重要であり、だからこそ重要視されています。ここでは、2つの内部トランザクションを示す例を紹介します。

ElanはSushiトークンの一部をSushiswapを使ってETHに交換したいと考えています。これは複数のステップから成るプロセスで、さまざまなtransferが関わります。

  1. まず、彼女はSushiスマートコントラクトとやり取りし、token transferを通じてSushiトークンをそのスマートコントラクトに送ります。
  2. 次に、そのスマートコントラクトは彼女のSushiを受け取り、別のスマートコントラクトであるSUSHI/WETHプールに預け入れます。これはtoken transferにあたります。その見返りとして、コントラクトは同等の価値のWETHを受け取ります。
  3. ElanはWETHではなくETHが欲しいため、SushiスマートコントラクトはWETHスマートコントラクトとやり取りし、WETHをETHに交換(unwrap)します。WETHスマートコントラクトがSushiスマートコントラクトにETHを送るため、これは内部トランザクションとなります。
  4. 続いて、SushiコントラクトはこのETHをElanに送り返します。これも別の内部トランザクションです(Sushiスマートコントラクトが外部アドレスであるElanにETHを送る)。

(3)と(4)は、ERC 20トークンではなくETHが交換されているためtoken transfersではなく内部トランザクションであり、また、ETHを送っているのが(アカウントアドレスではなく)_スマートコントラクト_であるため外部transferでもありません。

内部transferとは何かを_説明する_だけでもこれほど複雑だとわかった今、それをリアルタイムで取得しようとすることを想像してみてください。楽ではなさそうです。

重要な意味を持つにもかかわらず、内部トランザクションの取得となると、実際にはかなり厄介になります。スマートコントラクトは水面下で何層もの内部コントラクト呼び出しをトリガーすることがあり、中には価値が全く紐づいていないものもあります。

さらに、internal transactionsはETHやtokenトランザクションのようにはオンチェーンに保存されないため、それらを取得するにはユーザーが親トランザクションから各子トランザクションまで呼び出しを1つずつ辿る必要があります。それどころか、この種のトレースを実行するには、Parity Trace nodeと呼ばれる特殊で高価かつエラーの起きやすいソフトウェアへのアクセスが必要で、これは同期に何週間もかかります。

ユーザーに、トランザクションのあらゆる段階についてのリアルタイムな情報を提供する

外部、token、internal transactionsの通知により、ユーザーは常に自分のお金がどこにあるのかを完全に把握できるようになります。Walletは今や、複雑な内部トランザクションを含め、ユーザーのアカウントに関連するtransferが発生するたびにユーザーへ通知する力を持っています。これらの通知は、開発者が構築・利用しているスマートコントラクトに関するより多くの情報を提供することにもなります。

Alchemyを使えば、3種類すべてのトランザクションについて通知を設定するのは簡単です。こちらから無料アカウントを作成すれば、数分でAlchemy Notifyを利用できるようになります。

トランザクション通知を受け取るまでの所要時間はわずか3分(3週間ではなく)

自前のParity Trace nodeを同期させて使えるようになるまで何週間も待つ代わりに、Alchemyとなら3分で統合できます。

  1. Alchemyにサインアップする
  2. URLと関連アドレスを指定してwebhookを作成する(新しいwebhookを作成するためのAPIもあります)
  3. Alchemyが通知を送信する
  4. ユーザーは自分の暗号資産取引の状況を気にする必要がなくなる

Alchemy Newsletter

リリース情報をいち早く受け取る

ニュースレターに登録する

Alchemyの最新のプロダクト情報とリソースをお届けします

A
O
D
+
80,000人以上が購読中

メールアドレスを入力すると、当社のマーケティング情報およびプロダクト最新情報の受信に同意したことになります。Alchemyが受け取った情報をプライバシー通知に従って取り扱うことに同意するものとします。購読はいつでも解除できます。