¿Es posible transferir el saldo de un contrato de otro contrato?

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?

No entiendo muy bien lo que estás tratando de hacer. ¿Está intentando transferir el saldo de B a A (vendedor)? En caso afirmativo, debe hacer eso en el contrato B: no puede obtener el saldo de esa manera. Está diciendo que intenta transferir el "saldo del contrato B del contrato A", lo que no tiene sentido.
@LauriPeltonen Quiero transferir el saldo del contrato B a una dirección de ethereum que es el vendedor. El vendedor está disponible en el contrato A.
@LauriPeltonen, ¿quieres decir que no es posible transferir el éter de un contrato de otro contrato? Por favor explique

Respuestas (1)

Solución 1

Para aceptar una transferencia de pago a un contrato inteligente, debe anular la función predeterminada function ()y hacer que payableacepte éteres.

function () public payable {}   

Solución 2

De lo contrario, puede llamar directamente a la función deposity 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);
    }
 }
No quiero depositar a un contrato. Quiero transferir el saldo del contrato B a una dirección ethereum que está disponible en el contrato A.
Edité mi respuesta. perdon por ese malentendido
¿Qué es en función transferir Saldo del contrato B? ¿Es la dirección de ethereum a la que quiero transferir?
Que una función para transferir el saldo del contrato (B) a una dirección ethereum. No puedes hacerlo directamente desde A. Entonces A tiene que llamar a B para hacer la transferencia.
Lo acabo de probar. Se ejecuta con éxito, pero no puedo ver ningún cambio en el éter del receptor. ¿Por qué está pasando eso?
¿Hay algún fondo en B? ¿Cuál es el saldo de B?
era 50 éter. ¡Acabo de intentarlo de nuevo con 10 y 5 y 50 de nuevo y funcionó perfectamente! .. tal vez hice algo mal!! ¡MUCHAS GRACIAS! ¡Estuve atrapado durante días literalmente!
Fresco. Me alegro de que haya funcionado. Sin embargo, no olvide implementar un modificador para permitir que solo el contrato A transfiera el saldo B. De lo contrario, cualquiera podría desviar el contrato...
¿Cómo creo un modificador que permita el contrato A... también está usando msg.sender?