[英]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.