Hice un arreglo con un amigo en el que accedió a darme el 1% de todo el Ethereum que venda en el momento de la venta. Así que posee 100 Ether hoy; en 1 año va a vender 10 Ether, me enviarían 0.1 Ether de su cuenta en ese momento.
¿Cómo haría para capturar esto en un contrato de Ethereum? no me queda claro:
Soy totalmente nuevo en Ethereum, así que disculpe si me equivoco en algunas de las palabras/conceptos.
Su mejor apuesta sería crear un contrato que divida el dinero a medida que se retira. Para hacer esto, básicamente crearía un contrato que solo le permite a su amigo retirar dinero, pero cada vez que lo hace, envía el 1% del monto del retiro a su dirección.
Luego enviaría sus 100 ETH al contrato, sabiendo que puede recuperarlos en cualquier momento, pero al hacerlo le paga el 1% que acordó.
Probablemente se vería algo como esto:
contract Siphon {
address private _owner;
address private _beneficiary;
modifier onlyOwner {
if (msg.sender != owner) {
throw;
}
_;
}
// alternatively, use the sender to be the owner, so the owner
// is the deployer.
function Siphon(address owner, address beneficiary) payable {
_owner = owner;
_beneficiary = beneficiary;
}
function withdraw(uint256 amount) onlyOwner {
// note that integer division means amounts less than 100
// would have no payout
uint256 beneficiaryAmount = amount / 100;
if (beneficiaryAmount > 0) {
if (!_beneficiary.send(beneficiaryAmount)) {
throw;
}
}
if (!owner.send(amount - beneficiaryAmount)) {
throw;
}
}
// allow deposits
function () payable onlyOwner {}
}
No usaría ese código directamente, ya que probablemente haya algunos casos extremos en los que valga la pena pensar. Tomé nota de uno, al menos. Es posible que tampoco se ajuste a sus necesidades, pero se debe aplicar el concepto central: para hacer cumplir tal restricción en el desembolso de ETH, el ETH debe ser propiedad del contrato y los eventos que le interesan (en particular) , también deben ser gestionados por el contrato.
jeff
beneficiaryAmount
por lo que el amigo recibirá 9.9 ETH. Tampoco esto le impide hacer la venta fuera del contrato.DeviatePez
jeff
DeviatePez