逆引きイーサリアム ethereum

【逆引き】コントラクト内でETHを送金する方法

コントラクト内でETHを送金する方法を紹介します. address型のもつtransferメソッドを使用します。 送金先はそのaddressに対してなので注意しましょう.
Feb. 2, 2020, 1:51 p.m.

目次

目的

コントラクトが保有するETHを別のコントラクトまたはユーザーに対して送金したい.

実装方法

address型がもつtransferメソッドを実行すると、そのアドレスに対して送金されます.

例えば、A.transfer(100)なら、Aさん100送金されます.

コントラクトから支払われます.

残高不足の場合にはエラーとなります.

サンプルコード

以下のコードはRemixでそのまま試すことができます.

自分に送金

まずは一番多いケースからです.

コントラクトを呼び出したユーザー自身に送金するサンプルコードです.

contract Bank {
    function withdraw(uint256 amount) public {
        require(amount <= address(this).balance);
        msg.sender.transfer(amount);
    }
}

任意のアドレスに送金

次に任意のアドレスに対して送金するサンプルコードです.

contract Bank {
    function send(address to, uint256 amount) public {
        require(amount <= address(this).balance);
        to.transfer(amount);
    }
}

以上、コントラクトからETHを送金する方法を紹介しました.