contract A{
address public seller;
function A(){
seller = 0xdd870fa1b7c4700f2bd7f44238821c26f7392148;
}
function transfer_from_B(address b){
seller.transfer(b.balance);//ERROR
}
}
contract B{
function deposit() payable{
}
}
Recibo un error cuando trato de transferir el saldo del contrato B del contrato A. ¿No es posible hacer eso?
Solución 1
Para aceptar una transferencia de pago a un contrato inteligente, debe anular la función predeterminada function ()
y hacer que payable
acepte éteres.
function () public payable {}
Solución 2
De lo contrario, puede llamar directamente a la función deposit
y agregar la cantidad de valor que desea transferir a esa función.
seller.deposit().value(b.balance);
Edito: malentendido.
Un contrato inteligente no puede enviar su saldo en nombre de otro contrato. Deberá crear una función de transferencia en el contrato inteligente B y llamarla desde A.
contract A{
address public seller;
function A(){
seller = 0xdd870fa1b7c4700f2bd7f44238821c26f7392148;
}
function transfer_from_B(address b){
b.transferBalance(seller)
}
}
contract B{
function transferBalance(to) { // add modifier onlyA
to.transfer(this.balance);
}
}
Lauri Peltonen
Haya Raed
Haya Raed