payable y receive en Solidity
Aceptar ether es opcional; receive atrapa los envíos planos.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
// payable accepts ether; receive catches plain transfers.
contract DonationJar {
mapping(address => uint256) public given;
event Thanks(address indexed donor, uint256 amount);
receive() external payable {
given[msg.sender] += msg.value;
emit Thanks(msg.sender, msg.value);
}
function jarTotal() external view returns (uint256) {
return address(this).balance;
}
}
Cómo funciona
receive() external payablecorre en transferencias peladas.msg.valuees el monto que llegó, en wei.address(this).balancelee los fondos propios del contrato.
Palabras clave y builtins usados aquí
addresscontractemiteventexternalfunctionmappingpayablepublicreturnreturnsthisuint256
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 424
- Tokens
- 74
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 74 segundos.
Paso 2 de 3 en Ether y eventos; paso 12 de 28 en Fundamentos del lenguaje.