Package disc

Interface Party


public interface Party
Участник системы, основная сущность, распоряжающаяся токенами, создающее участников и платежи. Первый участник, владеющий всеми токенами создается DISC.initialEmission(String, String, BigDecimal, PrivateKey), другие участники создаются уже им и теми кого он создал.
  • Method Details

    • getId

      @NonNull String getId()
      Returns:
      уникальный идентификатор участника, создается автоматически
    • getName

      @NonNull String getName()
      Returns:
      имя участника, для отладки в основном, устанавливается при создании участника
    • getStateContractId

      @NonNull String getStateContractId()
      Участники, как и токены, ссылаются на идентификатор госконтракта. Этот контракт один на всех и неизменен.
      Returns:
      идентификатор госконтракта
    • getPublicKey

      @NonNull com.icodici.crypto.PublicKey getPublicKey()
      Returns:
      Главный публичный ключ участника
    • getKeyAddress

      default @NonNull String getKeyAddress()
      Returns:
      текстовый адрес главного ключа участника
    • getBalance

      @NonNull Balance getBalance()
      Returns:
      баланс токенов участника
    • createParty

      Party createParty(@NonNull String name, @NonNull com.icodici.crypto.PublicKey publicKey)
      Создать дополнительного участника в рамках проекта (эмиссии), например субконтрактора. При создании участнка указывается только его публичный ключ, приватный ключ известен только новому участнику и на данном этапе не используется.

      Обратитевнимание, что один фактический участник может иметь произвольное количество управляемых им объектов Party, в том числе и с одинаковым ключом.

      Parameters:
      name - название, для отладки например
      publicKey - публичный ключ участника. не может совпажать с уже использованными в проекте (эмиссии) ключами, это проверяется. Приватный ключ участника должен быть надежно сохранен где то у нового участника, локально.
      Returns:
      новый участник с нулевым балансом.
    • createAdvancePayment

      AdvancePayment createAdvancePayment(@NonNull com.icodici.crypto.PrivateKey privateKey, @NonNull Party recipient, @NonNull BigDecimal amount, @NonNull ZonedDateTime scheduledAt, @NonNull String subcontractId) throws InsufficientFundsException
      Создать авансирование для другого участника. Включает подпись приватным ключом участника. Приватный ключ не передается по сети и не сохраняется за пределами данного вызова (используется локально).
      Parameters:
      privateKey - приватный ключ текущего участника,
      recipient - участник получатель авансирования
      amount - сумма авансирвоания
      scheduledAt - дата начиная с которой токены авансирования можно использовать (например для обмена)
      subcontractId - идентификатор субподрядного контракта
      Returns:
      объект авансирования, с собственным смартконтрактом, позволяющий получить из него токены по наступлению даты.
      Throws:
      InsufficientFundsException - если недостаточно токенов
    • createProvisionPayment

      ProvisionPayment createProvisionPayment(@NonNull com.icodici.crypto.PrivateKey privateKey, @NonNull Party recipient, @NonNull BigDecimal amount, @NonNull ZonedDateTime scheduledAt, @NonNull String subcontractId) throws InsufficientFundsException
      Зарезервировать платеж под обсепечение расчетов. Для получения средств потребуются акты.
      Parameters:
      privateKey - приватный ключ текущего участника,
      recipient - участник получатель авансирования
      amount - сумма авансирвоания
      scheduledAt - дата начиная с которой токены авансирования можно использовать (например для обмена)
      subcontractId - идентификатор субподрядного контракта
      Returns:
      объект резервирующий сумму под обеспечение расчетов
      Throws:
      InsufficientFundsException - если недостаточно токенов
    • createAcceptanceAct

      AcceptanceAct createAcceptanceAct(@NonNull Party performingParty, @NonNull BigDecimal amount, @NonNull String subcontractId, @NonNull String title)
      Зарегистрировать акт для использования с ProvisionPayment, см createProvisionPayment(PrivateKey, Party, BigDecimal, ZonedDateTime, String). Акт автоматически учитывается и влияет на исполнение платежей по ProvisionPayment c соответствуюшим идентификатором субподрядного контракта. Удобнее использовать из ProvisionPayment.createAct(BigDecimal, String).

      Изначально акт не подписан и не зарегистирован, см AcceptanceAct по процедуре.

      Parameters:
      performingParty - исполнитель работ
      amount - актируемая сумма
      title - название акта, для отладки и отображения
      subcontractId - идентификатор субподрядного контракта
      Returns:
      неподписанный акт, его должны подписать исполнитель и заказчик и зарегистрировать в блокчейне
    • getPaymentHistory

      @NonNull PaymentHistory getPaymentHistory()
      Returns:
      история платежей связанных с данной сущностью.
    • createRepaymentContract

      @NonNull RepaymentContract createRepaymentContract(@NonNull com.icodici.crypto.PrivateKey key, @NonNull BigDecimal amount) throws InsufficientFundsException
      Создать запрос на обмен свободных токенов на фиат. Баланс свободных токенов, см. getBalance(), должен быть не менее свободной суммы. Полученный контракт, изначально подписанный владельцем,
      Parameters:
      key - приватный ключ владельца
      amount - сумма на обмен
      Returns:
      контракт запроса на обратный обмен токенов
      Throws:
      InsufficientFundsException - если недостаточно свободных токенов