¿Puedo ver un ejemplo de una función de pago en uso práctico?

Me gustaría ver un ejemplo de una función modificada como pagadera en la práctica. Me gustaría que aceptara el pago y mantuviera el éter.

Me gustaría leer otra función en el mismo contrato que pueda enviar el éter retenido a una dirección específica.

Respuestas (1)

Un ejemplo realmente básico de https://programtheblockchain.com/posts/2017/12/15/writing-a-contract-that-handles-ether/ :

pragma solidity ^0.4.17;

contract CommunityChest {
    function withdraw() public {
        msg.sender.transfer(this.balance);
    }

    function deposit(uint256 amount) payable public {
        require(msg.value == amount);
        // nothing else to do!
    }

    function getBalance() public view returns (uint256) {
        return this.balance;
    } 
}
¿De dónde viene el dinero de este saldo?
Es el éter retenido por el contrato. Por ejemplo, el éter enviado a través de llamadas a deposit.
¿Qué sucede con el dinero 'pagado' para depositar () si no se hace nada? ¿Qué es esto (aquí) exactamente?
No estoy seguro de entender la pregunta. Si se transfiere dinero en una llamada a deposit, entonces... eso es todo. Ha sido transferido. La cuenta que envió la transacción ahora tiene menos ether y el contrato tiene más ether. thises una variable que hace referencia al contrato.
Está bien. Eso responde a mi pregunta. No entendí que un contrato contiene un solo bote de todo el dinero que se le envía.
Consulte también programtheblockchain.com/posts/2018/01/05/… para saber cómo realizar un seguimiento de quién contribuyó con qué.