先日、コインチェックから「HashHub(ハッシュハブ)」にレンディング(貸し仮想通貨)のため、
イーサリアムを送金しようとしたとき、
送金エラーとなって自動でキャンセルされてしまう、ということが起こりました。
エラーメッセージでは
「コントラクトアドレスのため、送金をキャンセルしました」
ということで、最初は????でしたが、調べた結果、解決できたので紹介しておきたいと思います。
- イーサリアムの「コントラクトアドレス」とは何か
- コントラクトアドレスの「見分け方」
- コントラクトアドレスへ「送金できない場面」とは
- コントラクトアドレスヘイーサリアムを「送金する方法」
≫参考 【体験談】大丈夫か不安だったHashHubへのレンディングを決断した理由
コインチェックのエラーメッセージ「宛先アドレスがコントラクトアドレスのため、送金をキャンセル」とは
まず、状況の説明から。
この画像が、タイトルのメッセージが出たときの画面。
コインチェックのイーサリアムをHashHubの送金アドレスに送ろうとしたところ、送金指示の直後にこのメッセージがでて「送金はキャンセル」されました。
なお、HashHubに対しては、事前にテスト送金で0.01ETH送っており、この時は問題なく送金できたのですが、本送金(残り9.99ETH)でエラーとなりました。
最初は送付ミスで「9.99ETHをセルフゴックスしたか?!?!」と思いましたが、コインはちゃんとコインチェック内にあるし、どうやらコインチェック側のセーフティ機能が働いたということのようです。
コインチェックの送金画面でも以下の但し書きがあり、これに該当しているよう。
まとめると、下のようになります。
- HashHubの送金アドレスが「コントラクトアドレス」である
- コインチェックは「コントラクトアドレス」への送金を禁じている
- HashHubの送金アドレスへは「初回は送金できたが、2回目ではダメだった」
コントラクトアドレスとは
コントラクトアドレスとは、
- イーサリアムの「契約のためのアドレス」
とのこと。
これは、いわゆる「送付先のアドレス」とは別ものです。
BTCとETHの「アドレスの違い」
ビットコインは、ブロックチェーンによって取引履歴を管理しており、通常使うアドレスは「送金先」を表す住所のようなもの。
このアドレスそのものが送付先となります。
これに対し、イーサリアムはブロックチェーン上にまず「契約情報」を書き込み、その上で送金を実行しています。
コントラクトアドレスはこの「契約情報」に対して与えられたアドレスであり、「送付先」とはまた別もの。
「コントラクトアドレスへ送金」するのは間違い
コントラクトアドレスは、契約情報を書いたアドレスのため、送付先だと間違ってコントラクトアドレスに送ってしまうと、ゴックスになってしまう模様。
このため、コインチェックなど、
一部の国内取引所では、コントラクトアドレスへの送金をストップしている
=送金された場合でも自動キャンセルする
ようになっているようです。
2回目の送金以降、コントラクトアドレスに変わる?
HashHubの送金アドレスへ「初回は送金できたのに、2回目ではダメだった理由」は今ひとつ分かりません。
初回の送金の時点でそのアドレスが「コントラクトアドレスに変わった?」ということなのかもしれませんが
・・・この点はいまだに謎です。
コントラクトアドレスの見分け方
見た目には違いがつかないコントラクトアドレスがそうであると見分ける方法は、「Etherscan」というサイト。
アドレスを入力すると、見分けることができます。
コントラクトアドレスであれば左上に「Contract」。そうでなければ、「Address」と表示されます。
コントラクトアドレスへのアドレスができない取引所
コインチェックのように、コントラクトアドレスへの送金ができない国内取引所は以下のとおり。
- コインチェック
- Zaif
- Biflyer
- BitPoint
- TaoTao
- 楽天ウォレット
- DMM Bitcoin
(出典:HashHub「貸出しのために取引所から暗号資産貸出用アドレスへ送金(出金/出庫)することは可能ですか?」)
※最新情報は、必ずその取引所で確認してください。
コントラクトアドレスへ送金する方法
対処方としては、
自分で秘密鍵を管理できる「セルフウォレットアプリ」
を経由して送金すればOK。
秘密鍵を管理しない送金元からは送れない
HashHub側では、「秘密鍵を自身で管理するウォレットからの送金を推奨している」とのこと。
コインチェックなどの国内取引所は私たちユーザーが秘密鍵を持っておらず、運営管理になっています。
また、ほとんどの海外取引所からも送金できるとのことですが、こちらは推奨されていません。
↓HashHub代表の平野さん(@junbhirano)から返信いただきました。
申し訳ございません。一部国内取引所ではコントラクトアドレスへの送金が行えません。
ETHの送金は自身で秘密鍵を管理するウォレットからを推奨しております。あるいは推奨はしませんが、ほとんど全ての主要な海外取引所からもコントラクトウォレットへの送金が可能です。 https://t.co/EusTY0oC5L— 平野淳也 Junya Hirano HashHub (@junbhirano) April 25, 2021
セルフウォレットアプリ「MyEtherWallet」を経由する
HashHubでは、イーサリアムの送金に「MyEtherWallet」というアプリが推奨されています。
これは、「セルフウォレット」で、自分で秘密鍵を管理します(キーフレーズとして自分でいくつかの英単語を鍵として管理する)。
このアプリをスマホにダウンロードし、
「コインチェック⇒My Ether Wallet⇒HashHub」
と送ることで、無事ハッシュタブに送金できました。
ちなみに「超速達・速達・通常」3種類の送金モードが選べます(短い送金時間のものは、手数料も高い)。
My Ether Walletのダウンロード・送金方法は「コントラクトアドレスへETH/DAIを送る方法を教えてほしい。」のページで詳しく解説されています。英語アプリですが、このページ通りやっていけば問題ありません。
これが漏れると資金を盗られます。
以上、コントラクトアドレスへの送金について、実体験と調べたことをまとめました。まだまだ勉強不足ですので、詳しい方いらっしゃいましたら、コメント欄で補足いただけると嬉しいです。