Back

Lesson 23:
Payable

Introduction to payable keyword and how to use it in your smart contracts.

Visit desktop version for better experiences.

Payable

The payable keyword in Solidity is used to indicate that a function can receive Ether. This is required if you want to receive Ether in a function.

An exception will be thrown if the receiving contract does not have a receive function receive() external payable {...}.

// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; contract PayableExample { // Payable address can receive Ether address payable public recipient; // Payable constructor can receive Ether constructor(address payable _recipient) { recipient = _recipient; } // Function to deposit Ether into this contract. // Call this function along with some Ether. function deposit() public payable {} // Function to withdraw all Ether from this contract. // Notice how this function below does not need payable keyword. // It has been defined in the global recipient variable. function withdraw() public { // get the amount of Ether stored in this contract uint256 amount = address(this).balance; // send all Ether to recipient (bool success,) = recipient.call{value: amount}(""); require(success, "Failed to send Ether"); } // Function to transfer Ether from this contract to another address function transfer(address payable _to, uint256 _amount) public { // Note that "_to" is declared as payable (bool success,) = _to.call{value: _amount}(""); require(success, "Failed to send Ether"); } // This function is called when Ether is sent without data receive() external payable { deposit(); } }

© 2024 Scroll Foundation | All rights reserved

Terms of UsePrivacy Policy