El contrato no se implementa, no funciona según el plan

Mi plan es desarrollar un contrato de acuerdo de muestra entre el cliente y el proveedor de automóviles. el flujo de trabajo es el siguiente...

  1. El cliente se registrará en el contrato carRentalServiceProvider.
  2. después del registro, solo el cliente registrado puede alquilar un automóvil utilizando el contrato RentingCar. (el cliente registrado y no registrado no está alquilando un automóvil) en realidad, tengo un problema para implementar este contrato. Supongo que el problema es con la siguiente función con la función isActive()
    función rentingCarFromCarPool (dirección _customerAddress){

    if(isActive() && NumberOfAvailableCarInPool > 0){
        carRentingFromPool[_customerAddress] = CarRentingStatus({
                                                    carRentActive: true, 
                                                    lastUpdate: now,
                                                    carModel: "ToyotaCorolla X 2015"
                                                    });
        NumberOfAvailableCarInPool--;
    } else {
        throw;
    }
    

    }

Es función activa:

function isActive()  returns (bool) {
    if(rentCar[msg.sender].active == true){
    return true;
    } else {
    return false;
    }
}

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

  1. El proveedor de servicios de automóviles puede establecer el alquiler y la tarifa de registro para el cliente con el contrato CarRentalServiceProvider.>>>> (funciona bien)

  2. el cliente puede pagar la factura mediante el contrato CarRentalServiceCustomer. El problema es que después de pagar el alquiler y la tarifa de registro, ambos deberían ser cero. Pero no se convierte en 0 después de mostrar un pago exitoso. Pero de mi cuenta de contrato que muestra la misma cantidad de dinero.

ingrese la descripción de la imagen aquí

aquí está mi código completo https://ethereum.github.io/browser-solidity/#version=soljson-v0.4.9+commit.364da425.js

Amablemente ayúdame a desarrollar este proyecto según el plan y libre de errores. Muchas gracias por adelantado.

Nota: después de resolver este problema, agregaré algunas otras funcionalidades.

Respuestas (1)

Estos problemas probablemente se pueden dejar de lado para fines de prueba:

  1. Falta la cuenta general
  2. falta onlyOwner (#1)

Varias funciones que usan _providerAddress parecen estar confundidas con respecto a quién envía la transacción y qué hace. ¿Es _providerAddress el arrendatario? ¿Estas funciones están destinadas a ser utilizadas por el personal de la oficina o por el público? Observo que algunos de ellos son para pagar tarifas, por lo que posiblemente sea por el público, pero no están enviando tarifas; entonces la intención es confusa.

Podría ser posible organizar esto y demostrarlo con un ejemplo, pero me resulta difícil comprender la intención solo del código tal como es. Por favor, aclare cómo se pretende que funcione el contrato:

  1. Oficina define una flota de coches. ¿Tienen tarifas fijas o varían según el contrato de alquiler?
  2. ¿El usuario se registra a sí mismo, o la oficina registra al usuario?
  3. ¿El usuario selecciona el automóvil y lo alquila para sí mismo, o la oficina selecciona el automóvil y alquila al usuario?
  4. El usuario paga la tarifa a la oficina y la oficina se aplica al registro, o el usuario paga al registro.
  5. ¿El usuario paga el alquiler de la oficina y la oficina se aplica al alquiler, o el usuario paga el alquiler según el acuerdo?
  6. ¿Cada automóvil tiene una tarifa de alquiler específica o una tarifa de alquiler establecida por la oficina para cada contrato de alquiler?