Reciba ether desde una dirección y transfiera tokens a otra [cerrado]

Estoy iniciando una venta colectiva y quiero agregar una función personalizada a mi contrato de venta colectiva. Básicamente, quiero que los usuarios puedan comprar tokens para fiat y bitcoins.

Para que eso funcione, crearé una billetera con algo de éter y una vez que un usuario compre mis tokens con una transacción fiduciaria, quiero enviar la cantidad equivalente de éter a mi contrato desde la dirección de mi billetera, convertir la cantidad al número equivalente de tokens, luego transfiera los tokens a la dirección del inversionista.

¿Hay una manera de hacer eso?

Respuestas (2)

Esta no es la forma en que funciona, excepto si desea crear un intercambio. Ethereum no sabe qué es fiat o bitcoin. Solo Ether es válido en la cadena. Entonces tendrás que aceptar Ether solo en tu contrato. Los usuarios tendrán que comprar Ether primero en un Exchange usando fiat o BTC, por ejemplo, y luego enviarlo a su contrato.

No, yo sé eso. Como dije, crearé una billetera separada con ethereum y haré un intercambio rápido basado en el valor de ethereum de coinmarketcap. Básicamente, lo que estoy preguntando es cómo puedo llamar a una función en mi contrato que requiere que se le envíe ethereum. O en otras palabras, ¿cómo puedo hacer que mi función requiera y acepte ethereum como parámetro?
Eso no está claro lo que quieres hacer. Lo siento.
Creo que fue bastante claro. De todos modos, lo descubrí.
@ZaidAmir, en ese caso, siéntase libre de responder su propia pregunta. Siento mucho no haberte podido ayudar. Pero resolviste tu problema, así que es un final feliz.

Bueno, la solución fue bastante simple, simplemente cree una función a la que solo pueda llamar el propietario y transfiera fondos a cualquier dirección de billetera.

function FreeTransfer(address _investor, uint tokens) public onlyOwner returns (bool success) {
       return transfer(_investor, tokens);
    }

function transfer(address to, uint tokens) public returns (bool success) {
        balances[msg.sender] = safeSub(balances[msg.sender], tokens);
        balances[to] = safeAdd(balances[to], tokens);
        Transfer(msg.sender, to, tokens);
        return true;
    }