关于比特币技术的疑惑

2018-01-12 13:30:49 +08:00
 jason19659

最近区块链技术好像很火的样子,今天突然想到一个问题。 就是,既然比特币是去中心化的,我产生了一笔转账。。需要矿工同步。。那么矿工是怎么接收到我转账的消息的。

正常的转账是 我向服务器发送消息,服务器确认。

既然比特币是去中心化的 这个服务器是矿工们?那么这些矿工是怎么知道我转账了的?

我主动推送的?那么又是怎么推送的呢?

1004 次点击
所在节点    Bitcoin
17 条回复
mars0prince
2018-01-12 13:57:00 +08:00
比特币用的 tcp 协议
kaichen
2018-01-12 14:29:51 +08:00
你提交一笔交易,是需要提交到一个已经连入网络的节点去广播到整个网络的。

这里说的去中心化是指从博弈的角度来说你没法控制谁来当矿工。
takato
2018-01-12 14:35:35 +08:00
矿工的交易信息是从 full node 取的,所有交易都必须从一个 full node 进行广播(可以是任意一个)
你可以选一个别人搭建的 full node 广播(轻钱包),或者自己搭建一个 full node 广播(全节点钱包)

最好去翻阅一下中本聪的白皮书,写得很详细。
别人传出来的总是一星半点的信息。
kaichen
2018-01-12 15:09:22 +08:00
@takato full node 不是轻钱包,轻钱包是只同步时只保留导入钱包的数据。

自己搭全节点硬盘开销很大,以太坊要 50 多 G,也要时间去慢慢同步。
takato
2018-01-12 15:15:51 +08:00
@kaichen 轻钱包依然需要 blockchain_header,目的是验证某个交易是否真实存在。流程如下:
0. 从网络上获取并保存最长链的所有 block header 至本地;
1. 计算该交易的 hash 值 tx_hash ;
2. 定位到包含该 tx_hash 所在的区块,验证 block header 是否包含在已知的最长链中;
3. 从区块中获取构建 merkle tree 所需的 hash 值;
4. 根据这些 hash 值计算 merkle_root_hash ;
5. 若计算结果与 block header 中的 merkle_root_hash 相等,则交易真实存在。
6. 根据该 block header 所处的位置,确定该交易已经得到多少个确认。

所以轻钱包依然需要同步少量数据。。。
WinG
2018-01-12 15:19:22 +08:00
@kaichen 才 50G ?怕是你穿越了吧.

@takato 说的是对的。
kaichen
2018-01-12 15:27:21 +08:00
@WinG 哈哈,我们有运维节点池,以太坊用 Parity 跑起来,存储数据就用这么多空间。
kaichen
2018-01-12 15:28:15 +08:00
@takato 比特币的 SPV 到目前为止,正常账户需要 60M 多一点
takato
2018-01-12 15:31:57 +08:00
@WinG
@kaichen Parity 压缩过一些早期 block 的内容。所以是这个大小。

如果是 geth 的 full 模式,就是恐怖的级别了。
zhujiulin
2018-01-12 15:37:11 +08:00
P2P
话说比特币现在一个转账确认要一两天,手续费还贼贵。
还是 paypal 好用
davidqw
2018-01-12 15:42:55 +08:00
以太坊完整节点 380 多 G,剪枝过的节点 50G 差不多
kaichen
2018-01-12 19:58:48 +08:00
@takato Geth 1.8 里做了优化也是接近 60G 这样

https://twitter.com/peter_szilagyi/status/951707685044604928
takato
2018-01-12 22:02:18 +08:00
@kaichen geth 和 parity 的实现不太一样的。一个是 fastsync,一个是 wrapsync
jason19659
2018-01-12 23:34:44 +08:00
@kaichen #2 已经连入网络的节点是什么意思。。能举个例子吗。。
kaichen
2018-01-13 00:50:46 +08:00
@jason19659

本质上来说,区块链是一个网络,每个人都能成为网络的一份子

你发出一笔交易,需要网络超过一半的节点确认,才算数

当你要提交交易,需要找到网络里其中一个点,让他帮你广播到全网,这就是我说的你需要向一个网络中的节点提交交易
jason19659
2018-01-13 12:52:50 +08:00
@kaichen #15 我的意思是怎么才能连入这个网络。。通过 ip ?那为什么是这个 ip。。还是通过什么别的
frienmo
2018-01-16 01:01:12 +08:00
@jason19659 先尝试上次连接成功的 IP,然后再尝试 xxx (我不记得了),优先级最低的尝试是直接连 hard coded 的 IP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/422348

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX