¿Es posible limitar la cantidad de éteres enviados a un contrato inteligente?

Soy un novato en la programación de ethereum y estoy jugando con un contrato inteligente ICO. Quiero saber si es posible poner las siguientes restricciones en el contrato inteligente:

  1. ¿Puedo establecer una cantidad máxima de ether que se pueda enviar a la dirección del contrato durante un período de 24 horas? Quiero asegurarme de que un solo usuario no compre todos mis tokens.

  2. ¿Puedo establecer una cantidad máxima de ether para enviar a la dirección del contrato durante un período de 24 horas? Quiero asegurarme de que solo se venda cierta cantidad de mis tokens todos los días.

Respuestas (2)

No puede prohibir que las personas envíen Ether a un contrato, pero puede rastrear el saldo de Ether/Token del contrato y devolver el Ether recibido una vez que se alcance el límite. Debería leer algunos contratos de Open Zepplin , es un gran proyecto para tener una idea de cómo escribir contratos inteligentes. Tienen recursos en su lugar, para casos de uso como el suyo.

Para definir intervalos de tiempo y verificarlos, hay dos formas: I) Puede usar números de bloque con "block.number". II) Puede usar marcas de tiempo con "block.timestamp" que devuelve una época de Unix

ver aquí para más detalles

Esto no es correcto, en realidad. Puede revertir transacciones si ya se ha enviado cierta cantidad de Ether al contrato (con receivefunción, como se menciona en otra respuesta). De manera similar, puede conectar esa lógica con una lógica basada en el tiempo

Puede tener una receivefunción y tiene una requiredeclaración que hace que el tx se revierta si msg.value > someAmount. Más información en los documentos de solidez .