¿Cuál es un ejemplo de una ICO o Crowdsale que utilizó el contrato Open Zeppelin RefundVault?

Estoy tratando de entender el contrato RefundVault.sol de Open Zeppelin para implementar un límite mínimo que reembolsaría a los inversores si no se alcanza el límite. Estoy luchando por entenderlo, particularmente cómo funciona la enumeración para el estado y cómo la venta colectiva puede interactuar con el contrato para efectuar el mapeo del depósito.

Pensé que ver un ejemplo práctico de esto implementado ayudaría, pero no puedo encontrar ninguno. ¿Alguien tiene algún enlace a un código que use este u otro método para una funcionalidad de reembolso de límite suave?

Gracias por cualquier ayuda.

Hola John, ¿podrías dar más detalles sobre qué parte de RefundVault te confunde?
Por ejemplo, cuando crea un nuevo RefundVault dentro de la venta colectiva, pasa una dirección en el constructor. ¿Qué dirección debería ser esta? ¿Debo crear una dirección de billetera ethereum para que actúe como billetera para RefundVault? ¿Cómo mantiene esto los fondos bloqueados si he creado la billetera? Muchas gracias por su ayuda.
Además, la función close() tiene la línea: wallet.transfer(this.balance);¿Hacia y desde dónde se está transfiriendo esto? Gracias de nuevo, los conceptos de este contrato son nuevos para mí.

Respuestas (1)

Por ejemplo, cuando crea un nuevo RefundVault dentro de la venta colectiva, pasa una dirección en el constructor. ¿Qué dirección debería ser esta?

Esa es la dirección del crowdsale wallet.

El Crowdsalecontrato tiene una walletvariable de estado que almacena la dirección a la que se enviarán los fondos recaudados. El RefundVaultcontrato utilizado por las RefundableCrowdsaleobras como bóveda para almacenar los fondos hasta que finaliza el crowdsale y decide si enviar los fondos a la walletdirección del crowdsale o reembolsar a los compradores dependiendo de si se alcanzó o no la meta.

¿Debo crear una dirección de billetera ethereum para que actúe como billetera para RefundVault?

Debe generar una dirección de ethereum bajo su control (es decir, debe poseer la clave privada asociada) y pasarla al crowdsale en construcción.

¿Cómo mantiene esto los fondos bloqueados si he creado la billetera?

Porque el RefundableCrowdsaleno envía los fondos a la billetera sino al en su RefundVaultlugar. Después de la venta colectiva, solo si tiene éxito, RefundVaultenviará los fondos a la billetera de su propiedad. Es un desvío intencional para proteger a los compradores en caso de una venta multitudinaria fallida.

También la función close() tiene la línea: wallet.transfer(this.balance); ¿Hacia y desde dónde se está transfiriendo esto?

El transfermétodo del addresstipo toma un uint256parámetro y envía esa cantidad de wei desde la persona que llama a la dirección en la que se llama al método. En este caso, la persona que llama ( RefundVault) está enviando todo el wei en el contrato ( this.balance) a la walletdirección.