繁体   English   中英

区块链中的第一个交易请求在哪里?

[英]Where does the first request for transaction go in a blockchain?

我的问题很简单。 如果区块链上的用户想要发出交易请求,他/她将向特定 URL 发送请求。 如果此 URL 是动态的,那么如何选择特定的矿工来验证此请求。 而且,如果它是一个静态的 URL,它会不会破坏网络去中心化的全部意义? 因为如果你可以伪造一个特定的节点(它接受交易请求并将其转发给所有矿工

我知道这不会在后一种情况下也会出现相同的约束存在的问题,即如何从静态 URL 通知矿工。 好吧,我觉得如果地址是已知的,矿工将继续发送请求以检查是否在该 URL 上进行了交易请求

任何帮助表示赞赏

我对区块链相当陌生,但对了解这项技术非常感兴趣。
对不起,如果我的意识形态是这里的菜鸟。

编辑:我确实知道有相同的钱包服务,但我仍然提出同样的问题 - “如果它是一个静态 URL,它不会只是消除分散网络的全部意义吗?”

你需要有端点。 /transaction/broadcast 和 /transaction。

我们将交易数据发送到我们网络中随机节点上的 /transaction/broadcast。 在这个终点会发生的第一件事,我们将从发送的数据中创建一个新的交易。所以你应该已经有了在你的区块链中创建的方法。

创建新交易后,我们必须将该交易广播到网络内的每个节点。 此广播将在所有其他网络上的 /transaction 端点接收。

我们区块链中的每个节点都有一组其他节点的 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.' });
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM