走进开源代码
目录
走进开源代码
前言
从哪里开始?
总结
前言
今天是个既特殊又年轻的节日——双十一(剁手节),也算是个有纪念意义的开端吧!上周参加了系统架构设计师考试,论文没有写完,虽然这次肯定是过不了了,也算体验了一把,论文肯定要事先练习,否则边想边写在2小时内写3000字——相当于2秒写一个字,还是很紧张的。
作为一个老程序员,码了不少的代码,其实没什么精品,也就是熟练一些,看代码稍微快一点。而今开源代码已经成为热爱技术,喜爱分享,勤于探索的人心驰神往的宝库,因此想挤出一点时间学习一些开源项目的代码,并记录下学习的心得,供同样热爱代码的小伙伴参考交流。
近年来,区块链技术越来越收到各国的关注。在2017年,一次偶然的机会,我了解到了区块链这个概念,然后就在图书馆借了几本有关区块链的书,详细了解了一下。看完我挺震惊的,隐约感觉到,区块链的去中心化,资产数字化,价值传递将会给金融领域的一场变革,他还可以与其他技术比如物联网,5G,人工智能相结合,最终对其他的行业和领域产生巨大影响。由于作为区块链2.0的代表以太坊是使用Go语言开发的,所以我就开始自学Go语言,并入职了一家区块链公司。
虽然后来由于一些原因离开了公司,但我一直关注区块链技术的发展,也坚信区块链技术的前途不可限量。所以决定就从区块链技术的先锋——比特币,开始吧!
从哪里开始?
开源代码通常都比较庞大,比特币的源码也不例外!有关区块链和比特币的介绍就不赘述了,网上也有不少关于比特币源码的介绍。
首先我重温了论文《比特币:一种点对点电子货币系统》,然后参考了这篇文章。比特币的架构并不像当前流行的微服务以及C/S,B/S三层架构,这是由于区块链是基于P2P(Peer-to-Peer)对等网络实现的,比特币架构总体上分为两部分,一部分是前端,包括钱包(Wallet)或图形化界面;另一部分是运行在每个节点的后台程序,包括挖矿、区块链管理、脚本引擎以及网络管理等功能。
总结
正所谓“麻雀虽小,五脏俱全”,作为区块链1.0,真正的解决了论文中提到的问题:
1.在缺少可信任第三方的情况下如何防止双重支付?——所有交易就必须公开发布 ,而且需要一个能让所有参与者对交易收到顺序的单一历史达成共识的系统。
2.如何解决在分布式系统中维护一个统一的“账本”并保证“账本”不被篡改?——每个节点都只承认包含时间戳信息的哈希值组成的一条最长链。
3.如何保证区块链中节点的“活性”?——给计算出来新区快哈希值的节点奖励,也就是给“矿工”奖励,“矿工”计算新区块哈希值的过程就称为“挖矿”。
比特币是当之无愧老大,解决了上述三个问题就是这10多年来几经浮沉而依然屹立的重要原因。