Как обрабатывать битовые go комиссии в транзакциях - PullRequest
0 голосов
/ 14 апреля 2020

ПРОБЛЕМА

Я разрабатываю биржу, где пользователи могут вносить и снимать свои BT C. Я буду взимать плату за каждую транзакцию так же, как Coinbase и другие биржи. У меня проблемы с выяснением того, как к этому подойти, и вот такое решение, я думаю, могло бы сработать, но это вызывает некоторые вопросы.

СЦЕНАРИЙ

Давайте рассмотрим этот сценарий:

  • A = Кошелек клиента = Баланс 2 BT C
  • B = Кошелек назначения = Баланс 0 BT C
  • C = Кошелек сборов = Баланс 0 BT C

Кошелек A хочет отправить 2 BT C на кошелек B , но баланс будет недостаточным, потому что сумма транзакции должна составлять AMOUNT_TO_SEND + ( BLOCKCHAIN_FEE + BITGO_FEE ).

Итак, чтобы установить фиксированную комиссию для каждой транзакции, и быть в состоянии сказать клиенту, сколько составляет максимальная сумма, которую он может отправить из своего кошелька A, мне нужен способ, чтобы рассчитать суммы этой комиссии. Бит go имеет метод getEstimateFee, который возвращает оценочную плату, поэтому я мог бы построить мою плату следующим образом: TOTAL_FEE = ESTIMATE_BITGO_FEE + ( ESTIMATE_BITGO_FEE * 2) (это пример, где я хочу взимать с моего клиента 2-х кратную плату go и отправить ее на платный кошелек, который я настрою только для сбора комиссионных за транзакции). Эта комиссия должна быть больше, чем плата в битах go, поэтому транзакция никогда не завершится неудачей, поскольку я получаю ошибку от Бита go из-за недостаточных оснований.

Таким образом, я всегда могу ограничить сумму клиента можно отправить (AVAILABLEBALANCE - TOTAL_FEE), затем, когда транзакция будет выполнена, блокчейн сможет взять свою комиссию и бит go их. Итак, допустим, TOTAL_FEE = 0,5 BT C, поэтому максимальный размер кошелька, который A может отправить, составляет 1,5 BT C. Оставшиеся 0,5 BT C будут за бит go, а остальные go будут за кошелек (кошелек C)

ВОПРОС

  • Как вернуть оставшуюся сумму комиссии на мой кошелек C (кошелек для платежей)?
  • Имеет ли смысл этот сценарий?
  • Есть ли другой способ решить эту проблему?

Спасибо за ваше время, вы все.

...