• 许星昊
    2018-08-02
    第二种方式就是,代码中硬编码( hard-code )了一些地址,这些地址我们称之为种子节点(seed-node),当所有的种子节点全部失效时,全节点会尝试连接这些种子节点。



    这句话是有点迷糊、种子节点全部失效时,全节点尝试连接这些种子节点

    作者回复: 不好意思,应该是基于DNS的种子节点全部失效时,会尝试连接Hard code的种子节点。

    
     7
  • 阿痕
    2018-04-21
    爬虫完全没问题,可以设计一个递归算法,从一个peer节点出发,找到它相连的N个节点,再从这N个节点出发,以此类推。理论上应该可以找到所以的节点。
    
     3
  • 区块链先锋
    2018-05-30
    节点和区块有什么区别

    作者回复: 节点是启动的MySQL服务,区块是里面的表

    
     2
  • guanhua
    2018-05-12
    陈老师,请问区块同步方式1中,先同步区块头过程中就可以进行合法性验证了吗?之后再同步区块体就直接复制吗?
    每个区块头里面不都包含对上一个整个区块的哈希吗?

    作者回复: 每个头都包含上个区块的整块哈希的。

    
     2
  • Aaron
    2018-04-16
    根据节点的发现机制,完全可以爬取所有节点的信息

    作者回复: Sipa有一套简单的代码,叫bitcoin-seeder。可以参考

    
     2
  • 艾草
    2019-07-12
    比特币使用的是Gossip算法,以太坊使用的是Kademlia算法
    还有 为什么老师说tcp/ip是应用层,在osi模型里,tcp是传输层,ip是网络层。

    作者回复: 区块链其实是基于TCP/IP网络协议之上的,这与HTTP协议、SMTP协议是处在同一层,也就是应用层。

    这里说的是区块链,不是TCP/IP哦,是说区块链的P2P网络协议在应用层。

    
     1
  • 一身菜味
    2018-06-29
    看起来像是gossip协议

    作者回复: 是的呢

    
     1
  • Clancey
    2018-06-26
    陈老师,您好,NDN+区块链是否能从ip层改变整个网络架构?
    
     1
  • Geek_59
    2020-01-13
    极客时间第二期
    21天打卡行动 8/21
    <<深入浅出区块链10>>P2P网络

    回答老师问题
    可以设计一个节点爬虫,去爬全网节点?
    递归迭代可以搜索全网节点;

    今日所学:
    1,P2P 的网络协议:比较常见的有 BitTorrent、ED2K、Gnutella、Tor 等,也就是我们常说的 BT 工具和电驴,快播也是p2p;
    2,比特币、以太坊等众多数字货币都实现了属于自己的 P2P 网络协议,但是这种模式并不同于以上讨论的 P2P 网络协议,所以我们今天讨论的重点主要是区块链技术的 P2P 技术,也就是比特币和以太坊的 P2P 网络;
    3,P2P 网络技术:区块链的网络连接与拓扑结构、节点发现、局域网穿透与节点交互协议。
    4,网络连接除去少数支持 UDP 协议的区块链项目外,绝大部分的区块链项目所使用的底层网络协议依然是 TCP/IP 协议。所以从网络协议的角度来看,区块链其实是基于 TCP/IP 网络协议的,这与 HTTP 协议、SMTP 协议是处在同一层,也就是应用层;
    5,P2P 网络拓扑结构有很多种,有些是中心化拓扑,有些是半中心化拓扑,有些是全分布式拓扑结构。比特币全节点组成的网络是一种全分布式的拓扑结构,节点与节点之间的传输过程更接近“泛洪算法”,即:交易从某个节点产生,接着广播到临近节点,临近节点一传十十传百,直至传播到全网。
    6,全节点与 SPV 简化支付验证客户端之间的交互模式,更接近半中心化的拓扑结构,也就是 SPV 节点可以随机选择一个全节点进行连接,这个全节点会成为 SPV 节点的代理,帮助 SPV 节点广播交易;
    7,节点发现:初始节点发现共有两种方式,第一种叫做 DNS-seed,第二种方式就是,代码中硬编码( hard-code )了一些地址,这些地址我们称之为种子节点(seed-node),当所有的种子节点全部失效时,全节点会尝试连接这些种子节点。
    8,启动后节点发现:在 Bitcoin 的网络中,一个节点可以将自己维护的对等节点列表 (peer list) 发送给临近节点,
    9,黑名单与长连接
    10,局域网穿透
    11,节点交互协议:命令分为两种,一种是请求命令,一种是数据交互命令
    12,节点连接完成要做的第一件事情叫做握手操作。这一点在比特币和以太坊上的流程是差不多的,就是相互问候一下,提供一些简要信息。比如先交换一下版本号,看看是否兼容。只是以太坊为握手过程提供了对称加密,而比特币没有。握手完毕之后,无论交互什么信息,都是需要保持长连接的,在比特币上有 PING/PONG 这两种类型的消息,这很明显就是用于保持节点之间长连接的心跳而设计的;而在以太坊的设计中,将 PING/PONG 协议移到了节点发现的过程中。请求命令一般分为发起者请求,比如比特币中的 getaddr 命令是为了获取对方的可用节点列表,inv 命令则提供了数据传输,消息体中会包含一个数据向量。我们说区块链最重要的功能就是同步区块链,而同步区块恰巧是最考验 P2P 网络能力的。区块同步方式分为两种,第一种叫做 HeaderFirst,它提供了区块头先同步,同步完成以后再从其他节点获得区块体。第二种叫做 BlockFirst,这种区块同步的方式比较简单粗暴,就是从其他节点获取区块必须是完整的。第一种方案提供了较好的交互过程,减轻了网络负担。这两种同步方式会直接体现在节点交互协议上,他们使用的命令逻辑完全不同。
    展开
    
    
  • 小老鼠
    2019-12-09
    区块链信息都存在本地的,爬虫有什么意义呢?
    
    
  • 呼啦斯卡
    2018-09-03
    tcp/ip不是应用层协议

    作者回复: 是的,与HTTP,SMTP协议在同一层,应用层。

    
    
  • wahaha
    2018-07-01
    没有公网IP的两个节点不能用TCP直接互通吧?用UDP可以打洞来直接互通,不知有哪种区块链支持UDP打洞?

    作者回复: 有的呀,uunp协议

    
    
  • Ud
    2018-05-23
    请问1、一个节点要与多少个节点保持长连接?2、如果一个节点发起广播,如何保证不被其他节点循环广播同一个消息

    作者回复: 你好,这个是算法可配置的,一般是8个或更多。

    
    
  • 慢摇哥哥
    2018-05-20
    陈老师,两个问题请教:bitnodes.earn.com显示比特币网络上才1万出头的节点,会不会太少有安全问题;另外,有很多节点的NETWORK显示Hangzhou Alibaba Advertise Co.,Ltd,这是因为这些矿工运行在阿里云的原因?

    作者回复: 一万个节点是全节点,属于核心节点,类似电信的骨干网络。算上轻节点,不开放的节点,可能在百万以上。
    是的,很多开发和测试节点会在云上搭建,生产环境也首选在云上的。

    
    
  • guanhua
    2018-05-12
    陈老师,请问,同步区块的第一种方法,先同步区块头时就进行合法性验证吗?之后再同步区块体就直接复制吗?

    作者回复: 先同步头可以简单验证交易的存在和有效,完整同步依然要检验交易的有效性。

    
    
  • 王由华
    2018-05-01
    借前面读者的问题,"在挖出前,交易记录保存在普通节点还是核心服务器上?" 以及您的回答"保存在矿池的服务器中"。 我想问:1)交易记录只能保存在矿池服务器中吗?2)普通节点与矿池服务器的区别是什么?3)能详细描述下交易记录被发布到服务器的流程吗?

    作者回复: 1-只要是全节点,都有的。
    2-实际上全节点都一样,对等的,你也可以选择挖矿,只是中奖概率几乎为零。
    3-就是全网广播交易,等待被打包的过程,如果被旷工打包,则会从内存中移除。

    
    
  • ytl
    2018-04-22
    区块链公链都可以做爬虫,获得经济数据。

    作者回复: 爬虫只能过去节点信息哦,账本本来就是公开的,直接解析分析即可。

    
    
  • 刘诗峣oscar
    2018-04-21
    您好,请问 矿工解出一个区块后获得记录近期交易的权利和收益,那么在挖出前,交易记录保存在普通节点还是核心服务器上?矿工成功打包交易信息的首次广播人是谁?

    作者回复: 保存在矿池的服务器上,叫做memory pool。首次广播就是挖出块的矿工自己

    
    
  • 马蹄莲子
    2018-04-16
    应该可以做一个爬虫吧😄
    
    
  • oTo123
    2018-04-16
    挺好的
    
    
我们在线,来聊聊吧