Откуда берется первый запрос на транзакцию go в блокчейне? - PullRequest
1 голос
/ 18 марта 2020

Мой вопрос прост. Если пользователь в цепочке блоков хочет сделать запрос транзакции, он / она отправит запрос на определенный URL. Если этот URL-адрес является динамическим c, то каким образом выбирается конкретный майнер для проверки этого запроса. Более того, если это статический URL-адрес c, разве это не уничтожит весь смысл децентрализации сети? Потому что, если вы можете подделать тот конкретный узел (, который принимает запрос на транзакцию и направляет его всем майнерам )

, я знаю, что это также не возникнет. вопрос в последнем сценарии, что там действует то же самое ограничение относительно того, как майнеры будут информироваться со статического URL c. Ну, я чувствую, что если адрес известен, майнеры просто продолжат отправлять запросы на проверку, был ли сделан запрос транзакции по этому URL

Любая помощь приветствуется

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

1 Ответ

0 голосов
/ 05 апреля 2020

Вам нужно иметь конечные точки. / транзакция / трансляция и / транзакция.

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

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

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

const requestPromises = [];//sending transaction to each node returns a promise. so we store each promise inside the array.
    blockchain.networkNodes.forEach(networkNodeUrl => {
        const requestOptions = {
            uri: networkNodeUrl + '/transaction',
            method: 'POST',
            body: newTransaction,
            json: true
        };

        requestPromises.push(rp(requestOptions)); //I used request-promise library
    });

Как только все эти обещания будут выполнены, это означает, что наша транзакция успешно создана.

Promise.all(requestPromises)
    .then(data => {
        res.json({ note: 'Transaction created and broadcast successfully.' });
    });
...