Как исходный код защищен от подделки в блокчейне? - PullRequest
0 голосов
/ 23 октября 2018
class Block{
    constructor(timestamp, transactions, previousHash = ''){
        this.timestamp = timestamp;
        this.transactions = transactions;
        this.previousHash = previousHash;
        this.hash = this.calculateHash();
        this.nonce = 0;
    }

    calculateHash(){
        return SHA256(this.previousHash + JSON.stringify(this.transactions) 
        + this.timestamp + this.nonce).toString();
    }

    mineBlock(difficulty){
        while(this.hash.substring(0, difficulty) !== Array(difficulty + 
        1).join("0")){
            this.nonce++;
            this.hash = this.calculateHash();
        }

        console.log("Block mined: " + this.hash);
    }
}

В приведенном выше коде, как это обещано, что базовая логика не манипулировать в своих интересах?Я имею в виду, чтобы добывать блок, майнер должен вкладывать огромные вычислительные мощности.Если он / она может прервать цикл while, описанный выше, в методе mineBlock (), возможно, для извлечения блока и получения его не требуется много вычислений (при условии, что исходный код может быть обработан во всех валидаторах / майнерах (доказательство)работы и кол соответственно) машины).Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

возможно, не нужно много вычислений, чтобы добыть блок и принять его (при условии, что исходный код может быть обработан на всех машинах валидатора / майнера (подтверждение работы и кола соответственно))

Поскольку майнинг является односторонним алгоритмом, (в настоящее время) невозможно подделать решение без перебора, пока вы не получите решение.Таким образом, вы не можете подделать доказательство работы.

Однако вы упоминаете, что если исходный код можно изменить на всех валидаторах, они могут принять решение с меньшей сложностью.Это правда, но несколько замечаний по этому поводу:

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

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

Если вы предлагаете, чтобы код на всех майнерах былизменено:

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

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

0 голосов
/ 23 октября 2018

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

Такие технологии, как биткойн, нерушимы до 51% вычислительной мощности (в случае консервации PoW)исходит от честных узлов.

В тот момент, когда более 51% вычислительной мощности повреждено (вредоносно), бухгалтерская книга не является безопасной.

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

Написание DLT - это не только написание безошибочного кода (который не может быть использован для повреждения всех узлов, как вы указали в вопросе), но также и эффективные механизмы согласования, которые не могут быть использованы.

PoW означает Proof of Work.DLT расшифровывается как технология распределенной книги (которая включает в себя Blockchain, Tangles и т.умные контракты внутри блокчейна (это не язык, используемый для кодирования самой блокчейна, а код, используемый для программ, работающих внутри блокчейна, пример: Ethereum)

Если взять в качестве примера Ethereum, то существуют разные его реализации,geth (golang-ethereum) является наиболее активным.Как я уже говорил, если вы хотите создать свой собственный блокчейн, вероятно, вам следует повторно использовать код, который уже доказал свою надежность.

Ответ на вопрос: «новый блокчейн подвержен атакам на 51%» (это отравляет доказательствоблокчейнов, основанных на согласии с работой (в основном): да, это абсолютно верно, блокчейны новорожденных (или блокчейны с низкой скоростью хеширования), как правило, часто подвергаются атакам с помощью аренды хэш-мощности (см. «Частный случай с биткойнами» или «биткойн-золото»).К сожалению, нет способа предотвратить это, потому что именно так работает консенсус Proof of Work, единственное, что можно сделать для его сдерживания, - это дождаться большего количества подтверждений блока, прежде чем считать активы, поступающие из транзакции, расходуемыми.

Пример (имена выбираются случайным образом): у меня есть интернет-магазин, принимающий BTW (монету), пришедший из блокчейна Биткойн-Слабый, который часто страдает от 51% атак, но я делаю так, что хотя транзакция клиента была вставлена ​​в номер блока (X) Я жду до номера блока (X + 100), прежде чем позволить ему потратить эти деньги на моей платформе.

Почему я это делаю?Это потому, что 51% атак направлены на воссоздание двух цепочек и вставку более длинной цепочки, которая затем удаляет более короткую цепочку (ту, в которой я создал транзакцию, использованную для покупки на вашей платформе), поэтому чем больше блоков подтверждения я жду, тем больше денег набираюхакер, чтобы потратить 51% атаки на хэшрейт.Если его атака двойного расхода состоит в том, чтобы потратить 100 $, но я заставляю его потратить 101 $ на электроэнергию (или аренду хэш-мощности), тогда я отговариваю его атаковать цепь и пытаться удвоить расходы на моей платформе.

Надеюсь, это прояснило ваши сомнения.

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