最近区块链技术好像很火的样子,今天突然想到一个问题。 就是,既然比特币是去中心化的,我产生了一笔转账。。需要矿工同步。。那么矿工是怎么接收到我转账的消息的。
正常的转账是 我向服务器发送消息,服务器确认。
既然比特币是去中心化的 这个服务器是矿工们?那么这些矿工是怎么知道我转账了的?
我主动推送的?那么又是怎么推送的呢?
1
mars0prince 2018-01-12 13:57:00 +08:00
比特币用的 tcp 协议
|
2
kaichen 2018-01-12 14:29:51 +08:00
你提交一笔交易,是需要提交到一个已经连入网络的节点去广播到整个网络的。
这里说的去中心化是指从博弈的角度来说你没法控制谁来当矿工。 |
3
takato 2018-01-12 14:35:35 +08:00
矿工的交易信息是从 full node 取的,所有交易都必须从一个 full node 进行广播(可以是任意一个)
你可以选一个别人搭建的 full node 广播(轻钱包),或者自己搭建一个 full node 广播(全节点钱包) 最好去翻阅一下中本聪的白皮书,写得很详细。 别人传出来的总是一星半点的信息。 |
4
kaichen 2018-01-12 15:09:22 +08:00
|
5
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 所处的位置,确定该交易已经得到多少个确认。 所以轻钱包依然需要同步少量数据。。。 |
9
takato 2018-01-12 15:31:57 +08:00
|
10
zhujiulin 2018-01-12 15:37:11 +08:00
P2P
话说比特币现在一个转账确认要一两天,手续费还贼贵。 还是 paypal 好用 |
11
davidqw 2018-01-12 15:42:55 +08:00
以太坊完整节点 380 多 G,剪枝过的节点 50G 差不多
|
12
kaichen 2018-01-12 19:58:48 +08:00
|
14
jason19659 OP @kaichen #2 已经连入网络的节点是什么意思。。能举个例子吗。。
|
15
kaichen 2018-01-13 00:50:46 +08:00
@jason19659
本质上来说,区块链是一个网络,每个人都能成为网络的一份子 你发出一笔交易,需要网络超过一半的节点确认,才算数 当你要提交交易,需要找到网络里其中一个点,让他帮你广播到全网,这就是我说的你需要向一个网络中的节点提交交易 |
16
jason19659 OP @kaichen #15 我的意思是怎么才能连入这个网络。。通过 ip ?那为什么是这个 ip。。还是通过什么别的
|
17
frienmo 2018-01-16 01:01:12 +08:00
@jason19659 先尝试上次连接成功的 IP,然后再尝试 xxx (我不记得了),优先级最低的尝试是直接连 hard coded 的 IP
|