Контракт не развертывается, не работает по плану

Мой план состоит в том, чтобы разработать типовой договор договора между клиентом и поставщиком автомобилей. рабочий процесс, как показано ниже...

  1. Клиент зарегистрируется в контракте carRentalServiceProvider.
  2. после регистрации только зарегистрированный клиент может арендовать автомобиль по договору RentingCar. (не работает как зарегистрированный, так и незарегистрированный клиент арендует автомобиль) на самом деле у меня возникла проблема с развертыванием этого контракта. Я предполагаю, что проблема связана с функцией ниже с функцией функции isActive ()
    rentingCarFromCarPool (адрес _customerAddress) {

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

    }

Активная функция:

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

введите описание изображения здесь

введите описание изображения здесь

  1. поставщик автосервиса может установить арендную плату и регистрационный сбор для клиента с контрактом CarRentalServiceProvider.>>>> (работает нормально)

  2. клиент может оплатить счет, используя контракт CarRentalServiceCustomer. Проблема в том, что после оплаты арендной платы и регистрационного сбора оба должны быть равны нулю. Но он не становится 0 после показа успешной оплаты. Но с моего контрактного счета показывалась такая же сумма денег.

введите описание изображения здесь

вот мой полный код https://ethereum.github.io/browser-solidity/#version=soljson-v0.4.9+commit.364da425.js

Пожалуйста, помогите мне разработать этот проект в соответствии с планом и без ошибок. Заранее большое спасибо.

Примечание: после решения этой проблемы я добавлю некоторые другие функции.

Ответы (1)

Эти проблемы, вероятно, можно отложить для целей тестирования:

  1. Общая учетная запись отсутствует
  2. onlyOwner отсутствует (# 1)

Несколько функций, использующих _providerAddress, кажутся запутанными в отношении того, кто отправляет транзакцию и что она делает. Является ли _providerAddress арендатором? Предназначены ли эти функции для использования офисным персоналом или общественностью? Я отмечаю, что некоторые из них предназначены для оплаты сборов, поэтому, возможно, для общественности, но они не отправляют сборы; поэтому намерение сбивает с толку.

Возможно, это можно организовать и продемонстрировать на примере, но мне трудно понять намерение только из кода, как он есть. Уточните, пожалуйста, как должен действовать контракт:

  1. Офис определяет автопарк. У них фиксированная плата или они варьируются в зависимости от договора аренды?
  2. Пользователь регистрируется сам, или офис регистрирует пользователя?
  3. Пользователь выбирает машину и сдает ее себе, или офис выбирает машину и сдает ее пользователю?
  4. Пользователь платит взнос в офис, и офис подает заявку на регистрацию, или пользователь платит за регистрацию.
  5. Пользователь платит арендную плату за офис, а офис подает заявку на аренду, или пользователь платит арендную плату по соглашению?
  6. У каждого автомобиля есть определенная арендная плата или арендная плата устанавливается офисом для каждого договора аренды?