Как криптовалюты подтверждают, что вознаграждение за майнинг инициировано системой и является действительным? - PullRequest
0 голосов
/ 26 мая 2019

Я хочу убедиться, что транзакция вознаграждения за майнинг действительно действительна и что она была инициирована системой. В настоящее время я не знаю, как я мог бы проверить подлинность системы без жесткого кодирования открытых и закрытых ключей, которые опять-таки не были бы безопасными

В настоящее время я использую эллиптические инструменты для генерации ключей и их проверки.

  valid() {
    if (this.from === null) {
        return true;
        }
    if (!this.signature || this.signature.length === 0) {
        console.log('No signature on this transaction!\n');
        return false;
    }
    if (typeof this.amount !== 'number' || this.amount <= 0) {
        console.log('Amount must be a positive number\n');
        return false;
    }
    const publicKey = ec.keyFromPublic(this.from, "hex");
    return publicKey.verify(this.hash(), this.signature)
}

Прямо сейчас, если адрес отправителя равен нулю, что означает, что это было вознаграждение за майнинг, транзакция автоматически выполняется. Тем не менее, кто-то может просто дать адрес от «null», а затем, по существу, дать себе деньги.

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

1 Ответ

0 голосов
/ 28 мая 2019

Зависит от того, как выплачиваются награды за майнинг.В модели, основанной на счете, баланс майнера, включенного в заголовок, может быть увеличен в соответствии с вознаграждением за майнинг.Несоответствие состояния мира приведет к отклонению блока, гарантируя, что система соответствующим образом увеличивает баланс.В модели UTXO один из подходов состоит в том, чтобы майнер сам подписывал пустую транзакцию.Это подтвердит, что они контролируют закрытый ключ для адреса «до», однако в этом нет особой необходимости.Все зависит от ограничений вашей системы.В биткойнах правило для транзакции монеты основано на том, что она должна быть первой транзакцией в блоке, и что выходной utxo содержит сумму, равную текущей награде за майнинг + комиссионные, содержащиеся в этом блоке.База монет также должна включать текущую высоту блока как часть своих данных в соответствии с BIP 34. См. this для получения дополнительной информации о транзакциях монеты в биткойнах.

...