我需要找个什么是区块链链大神,带我做啊?

到目前为止我们所构建的原型巳经具备了什么是区块链链所有的关键特性:匿名,安全随机生成的地址;什么是区块链链数据存储;工作量证明系统;可靠地存储交噫。尽管这些特性都不可或缺但是仍有不足。能够使得这些特性真正发光发热使得加密货币成为可能的,是网络(network)如果实现的这樣一个什么是区块链链仅仅运行在单一节点上,有什么用呢如果只有一个用户,那么这些基于密码学的特性又有什么用呢?正是由于網络才使得整个机制能够运转和发光发热。

你可以将这些什么是区块链链特性认为是规则(rule)类似于人类在一起生活,繁衍生息建立嘚规则一种社会安排。什么是区块链链网络就是一个程序社区里面的每个程序都遵循同样的规则,正是由于遵循着同一个规则才使嘚网络能够长存。类似的当人们都有着同样的想法,就能够将拳头攥在一起构建一个更好的生活如果有人遵循着不同的规则,那么他們就将生活在一个分裂的社区(州公社,等等)中同样的,如果有什么是区块链链节点遵循不同的规则那么也会形成一个分裂的网絡。

重点在于:如果没有网络或者大部分节点都不遵守同样的规则,那么规则就会形同虚设毫无用处!

声明:不幸的是,我并没有足夠的时间来实现一个真实的 P2P 网络原型本文我会展示一个最常见的场景,这个场景涉及不同类型的节点继续改进这个场景,将它实现为┅个 P2P 网络对你来说是一个很好的挑战和实践!除了本文的场景,我也无法保证在其他场景将会正常工作抱歉!

本文的代码实现变化很夶,请点击  查看所有的代码更改

什么是区块链链网络是去中心化的,这意味着没有服务器客户端也不需要依赖服务器来获取或处理数據。在什么是区块链链网络中有的是节点,每个节点是网络的一个完全(full-fledged)成员节点就是一切:它既是一个客户端,也是一个服务器这一点需要牢记于心,因为这与传统的网页应用非常不同

什么是区块链链网络是一个 P2P(Peer-to-Peer,端到端)的网络即节点直接连接到其他节點。它的拓扑是扁平的因为在节点的世界中没有层级之分。下面是它的示意图:

要实现这样一个网络节点更加困难因为它们必须执行佷多操作。每个节点必须与很多其他节点进行交互它必须请求其他节点的状态,与自己的状态进行比较当状态过时时进行更新。

尽管節点具有完备成熟的属性但是它们也可以在网络中扮演不同角色。比如:

    这样的节点运行于强大或专用的硬件(比如 ASIC)之上它们唯一嘚目标是,尽可能快地挖出新块矿工是什么是区块链链中唯一可能会用到工作量证明的角色,因为挖矿实际上意味着解决 PoW 难题在权益證明 PoS 的什么是区块链链中,没有挖矿 这些节点验证矿工挖出来的块的有效性,并对交易进行确认为此,他们必须拥有什么是区块链链嘚完整拷贝同时,全节点执行路由操作帮助其他节点发现彼此。对于网络来说非常重要的一段就是要有足够多的全节点。因为正是這些节点执行了决策功能:他们决定了一个块或一笔交易的有效性 SPV 表示 Simplified Payment Verification,简单支付验证这些节点并不存储整个什么是区块链链副本,泹是仍然能够对交易进行验证(不过不是验证全部交易而是一个交易子集,比如发送到某个指定地址的交易)。一个 SPV 节点依赖一个全節点来获取数据可能有多个 SPV 节点连接到一个全节点。SPV 使得钱包应用成为可能:一个人不需要下载整个什么是区块链链但是仍能够验证怹的交易。

为了在目前的什么是区块链链原型中实现网络我们不得不简化一些事情。因为我们没有那么多的计算机来模拟一个多节点的網络当然,我们可以使用虚拟机或是 Docker 来解决这个问题但是这会使一切都变得更复杂:你将不得不先解决可能出现的虚拟机或 Docker 问题,而峩的目标是将全部精力都放在什么是区块链链实现上所以,我们想要在一台机器上运行多个什么是区块链链节点同时希望它们有不同嘚地址。为了实现这一点我们将使用端口号作为节点标识符,而不是使用 IP

P2P 网络中我们会想要从不同节点来传送块。

在我们的实现中峩们永远也不会发送有多重哈希的 inv。这就是为什么当 payload.Type == "tx" 时只会拿到第一个哈希。然后我们检查是否在内存池中已经有了这个哈希如果没囿,发送 getdata 消息

getdata 用于某个块或交易的请求,它可以仅包含一个块或交易的 ID

这个处理器比较地直观:如果它们请求一个块,则返回块;如果它们请求一笔交易则返回交易。注意我们并不检查实际上是否已经有了这个块或交易。这是一个缺陷 :)

实际完成数据转移的正是这些消息

当接收到一个新块时,我们把它放到什么是区块链链里面如果还有更多的什么是区块链需要下载,我们继续从上一个下载的块的那个节点继续请求当最后把所有块都下载完后,对 UTXO 集进行重新索引

TODO:并非无条件信任,我们应该在将每个块加入到什么是区块链链之湔对它们进行验证

首先要做的事情是将新交易放到内存池中(再次提醒,在将交易放到内存池之前必要对其进行验证)。下个片段:

檢查当前节点是否是中心节点在我们的实现中,中心节点并不会挖矿它只会将新的交易推送给网络中的其他节点。

下一个很大的代码爿段是矿工节点“专属”让我们对它进行一下分解:

miningAddress 只会在矿工节点上设置。如果当前节点(矿工)的内存池中有两笔或更多的交易开始挖矿:

首先,内存池中所有交易都是通过验证的无效的交易会被忽略,如果没有有效交易则挖矿中断。

验证后的交易被放到一个块裏同时还有附带奖励的 coinbase 交易。当块被挖出来以后UTXO 集会被重新索引。

当一笔交易被挖出来以后就会被从内存池中移除。当前节点所连接到的所有其他节点接收带有新块哈希的 inv 消息。在处理完消息后它们可以对块进行请求。

让我们来回顾一下上面定义的场景

创建一個钱包和一个新的什么是区块链链:

(为了简洁起见,我会使用假地址)

然后,会生成一个仅包含创世块的什么是区块链链我们需要保存块,并在其他节点使用创世块承担了一条链标识符的角色(在 Bitcoin Core 中,创世块是硬编码的)

向钱包地址发送一些币:

-mine 标志指的是块会立刻被同一节点挖出来我们必须要有这个标志,因为初始状态时网络中没有矿工节点。

这个节点会持续运行直到本文定义的场景结束。

启动上面保存创世块节点的什么是区块链链:

它会从中心节点下载所有什么是区块链为了检查一切正常,暂停节点运行并检查余额:

咑开一个新的终端窗口将它的 ID 设置为 3002,然后生成一个钱包这会是一个矿工节点。初始化什么是区块链链:

迅速切换到矿工节点你会看到挖出了一个新块!同时,检查中心节点的输出

切换到钱包节点并启动:

它会下载最近挖出来的块!

这是本系列的最后一篇文章了。峩本可以就实现一个真实的 P2P 网络原型继续展开但是我真的没有这么多时间。我希望本文已经回答了关于比特币技术的一些问题也给读鍺提出了一些问题,这些问题你可以自行寻找答案在比特币技术中还有隐藏着很多有趣的事情!好运!

}

本周比特币的大涨让投资者欢呼“牛市又回来了”,而在一众数字货币中最“躁动”的要数EOS,从4月11日至17日EOS累计涨幅超过40%。

EOS是由“天才程序员”BM(全名为ByteMaster,真名Daniel larimer))创立的什么是区块链链平台EOS币(又称柚子币)是平台发行的代币。EOS平台在技术上的领先优势使其有望成为比特币、以太坊之后应用范围最广的主链之一目前正受到业界密切关注。

4月8日国内专注EOS技术研发的社区“EOS联盟(EOSUnion)”获得了薛蛮子旗下“蛮子基金”数百万元的天使轮投資。“EOS联盟”正在参选EOS中国地区的超级节点薛蛮子对参选一事十分支持,他表示:“我很看好EOS的生态与未来EOS超级节点非常有意义”,接下来自己将作为首席顾问及投资人支持EOS联盟参选EOS超级节点

除了EOS联盟,加入EOS超级节点争夺战的还包括李笑来创立的InBlockchain、什么是区块链链社茭网络ONO、老猫、暴走恭亲王……

EOS代币和EOS平台为何如此受追捧其创造者BM又是如何在币链圈赢得显赫声名的?

1曾被中本聪“不屑”的程序员

BM昰币、链圈著名的技术型创业者在什么是区块链链大佬扑克牌中排在第六位(黑桃A),在中本聪、V神、李笑来、吴忌寒和沈波之后

过詓短短几年间,他相继创立了比特股(BitShares)、Steemit、EOS 三个重磅的什么是区块链链项目每个项目都堪称是对行业的一次巨大创新。

媒体报道称BM尛学时就开始在父亲指导下学习编程。2003年他从美国弗吉尼亚理工学院毕业,获得了计算机学士学位

BM曾透露,自己的理想是找到一个能夠保障人们生活、自由和财产安全的自由市场方案他认为,如果实现这样一个方案不仅可以挣钱,而且可以让世界变得更美好后来怹想到,创立一种自由货币是实现理想的最好途径

2009年,正当BM尝试开发数字货币时他发现已经有人创造出了比特币。“这不就是自己理想中的自由货币吗”他自问。于是BM很快参与到了比特币的开发、推广中。

不过BM 很快发现比特币网络存在的缺陷为此,他在2010年7月时与仳特币创始人中本聪进行了一场公开争论

BM 是在比特币论坛bitcointalk向中本聪提意见的,他指出与银行相比,比特币的交易确认时间太长了(10分鍾一次)它应该像刷信用卡那般迅速,这可以通过改变共识机制实现BM还表示,“我们需要比特银行(bit-banks)来允许成员银行与点银行之间嘚即时传输”

中本聪却并未采纳BM提出的方案,而是坚持比特币原有的机制中本聪回应BM称:“我已经解释过为何比特币的支付处理速度足够了,实际上是相当好了”他还用一句经典的台词回应了年轻的BM:“你要是不信我或是看不懂就算了,我没时间说服你抱歉。”

这呴话后来成为币链圈的金句被翻译成中文——“爱玩玩,不玩滚”

2连续创立三大什么是区块链链项目

既然比特币交易确认时间太慢,提意见还被中本聪“不屑”BM决定自己开发数字货币交易体系,于是他在2014年推出了比特股(BitShares)

比特股是一种支持包括数字货币、法币以忣贵金属等有价值实物的开源分布式交易系统。该系统提供了一个去中心化交易所的解决方案让每个人都成为交易所。

在技术方面比特股采用了锚定货币和DPOS共识机制,显著加快了交易速度给用户带来了更好的交易体验。但比特股代币(BTS)却没能和比特币、以太币一样荿为主流数字货币原因在于,BM干了一件很没原则的事——增发比特股最初的总量是20亿个代币,但2014年末BM不顾外界反对执意增发了5亿BTS,這导致投资者人心涣散信任崩解,结果可想而知:BTS币价随后连续大跌

比特股项目遇阻,让BM感触万千他在2015年末选择了离开团队,并在辭职时发表了一篇题为《WhyWhy?Why》的长文:

很多次,坐车远行时望着窗外飞驰的风景我就忍不住反思:我们曾经如何,我们做成了什么我们又要去向哪里呢?……虽然每做一件事都是有原因的但一件件的短期项目会让我们不知不觉脱离原先计划的路线图,并为此粉饰計划不如变化快

从比特股项目退出后,BM很快又开始了第二次创业这次他把什么是区块链链技术用在了内容社交平台。

2016年初BM基于他开發的Steem什么是区块链链推出了内容平台Steemit。

BM对平台秉持的原则是:不向加入社群的人收费而是奖赏每一个加入的成员;所有给社区带来价值嘚人应该得到股份作为回报。

在具体实施层面Steemit平台每天会释放一定量的代币(Steem,每年新增9.5%且数量不断减少),用于奖励优质内容的创莋者奖励代币的数量通过读者点赞、反对情况来分配。

Steemit上线后备受外界关注人们惊呼该平台将“颠覆传统媒体”。写优质内容赢代币嘚规则让一些作者快速“致富”最著名的例子是,有一位名叫theAnarchast的作者在Steemit平台通过一篇文章赚到了高达15000美金

但通过内容点赞来奖励代币嘚模式很快被玩坏了,一些用户依靠关系互相点赞严重破坏了平台的运行规则。也许是没想到解决这一问题的好办法在Steemit运行背离自己創业初衷时,BM再次选择了离开

在比特股、Steemit两个项目相继出走,并没有浇灭BM的创业热情也许,用什么是区块链链技术改变世界的理想就潒火焰一样在BM的心中燃烧离开Steemit后,他将视角转向了更宏大的方向:投身于开发一款类似操作系统的什么是区块链链平台

这个大型什么昰区块链链平台就是EOS,它可以提供各种必要的功能和超高的处理能力从而让开发者将注意力集中在业务层,实现分布式应用的性能扩展

目前,限制什么是区块链链应用的主要技术制约是什么是区块链链与生俱来的高延迟和低数据吞吐量以比特币为例,其网络要确认一份数据通常得等几十分钟,数据吞吐量只有7TPS/S以太坊较比特币网络效率虽有提升,但延迟和低吞吐量的问题依然没有得以很好解决

与仳特币和以太坊网络相比,EOS最大的优势在于数据吞吐量和交易效率显著升级EOS目前可以达到 1.5s 的平均确认速度,以及 3300 TPS 的数据吞吐量通过并荇链的方式,EOS未来理论上可以达到毫秒级的确认速度、最高一百万 TPS的数据吞吐量

此外,EOS的激励机制也比以太坊和比特币更诱人比特币囷以太坊的节点数量众多,而EOS为了追求极致的交易效率目前仅设置了21个超级节点,参与生产什么是区块链这些什么是区块链生产者由铨体持有 EOS令牌的用户投票选出。因为参与系统运营的只有 21 个什么是区块链生产者所以每个生产者可以获得丰厚的激励。

根据EOS白皮书介绍成为EOS主节点将获得 EOS每年增发 5% 的收益中的大部分,大约每个节点每年可以获得 238 万个EOS币的收益按照当前价格,一个节点每年可以分到超过1 億元人民币的奖励

EOS显著的技术优势与丰厚的激励机制,引来大量玩家竞争成为其超级节点正如文章开头提到的,仅在中国加入EOS超级節点争夺战的就包括EOS联盟、InBlockchain、ONO,还有老猫、暴走恭亲王等等

EOS主网计划在今年6月正式上线,届时什么是区块链链技术也有望从“砖头机時代”向前迈进一大步。如今若中本聪再与BM Larimer进行一场对话,神秘的“比特币之父”会不会对BM这位年轻开发者点个赞呢

本文来自全天候科技 ,责任编辑:提魔西版权归原作者所有,文章观点不代表锦鲤财经立场转载请联系原作者。

}
虽然有些人认为是一个早晚会出現问题的解决方案但是毫无疑问,这个创新技术是一个计算机技术上的奇迹那么,究竟什么是什么是区块链链呢

[indent]以 [i](Bitcoin)[/i]或其它加密货幣按时间顺序公开地记录交易的数字账本。[/indent]更通俗的说它是一个公开的数据库,新的数据存储在被称之为 [i]什么是区块链(block)[/i]的容器中並被添加到一个不可变的 [i]链(chain)[/i]中(因此被称为 [i]什么是区块链链(blockchain)[/i]),之前添加的数据也在该链中对于比特币或其它加密货币来说,这些数据就是一组组交易不过,也可以是其它任何类型的数据


带来了全新的、完全数字化的货币,如比特币和 [i]莱特币(Litecoin)[/i]它们并不由任何中心机构管理。这给那些认为当今的银行系统是骗局并将最终走向失败的人带来了自由什么是区块链链也革命性地改变了分布式计算的技术形式,如

我们首先将从定义我们的什么是区块链是什么开始在什么是区块链链中,每个什么是区块链随同时间戳及可选的索引┅同存储在 SnakeCoin 中,我们会存储这两者为了确保整个什么是区块链链的完整性,每个什么是区块链都会有一个自识别的哈希值如在比特幣中,每个什么是区块链的哈希是该块的索引、时间戳、数据和前一个什么是区块链的哈希值等数据的加密哈希值这里提及的“数据”鈳以是任何你想要的数据。


真棒现在我们有了什么是区块链的结构了,不过我们需要创建的是一个什么是区块链链我们需要把什么是區块链添加到一个实际的链中。如我们之前提到过的每个什么是区块链都需要前一个什么是区块链的信息。但问题是该什么是区块链鏈中的第一个什么是区块链在哪里?好吧这个第一个什么是区块链,也称之为创世什么是区块链是一个特别的什么是区块链。在很多凊况下它是手工添加的,或通过独特的逻辑添加的
我们将创建一个函数来简单地返回一个创世什么是区块链解决这个问题。这个什么昰区块链的索引为 0 其包含一些任意的数据值,其“前一哈希值”参数也是任意值
现在我们可以创建创世什么是区块链了,我们需要一個函数来生成该什么是区块链链中的后继什么是区块链该函数将获取链中的前一个什么是区块链作为参数,为要生成的什么是区块链创建数据并用相应的数据返回新的什么是区块链。新的什么是区块链的哈希值来自于之前的什么是区块链这样每个新的什么是区块链都提升了该什么是区块链链的完整性。如果我们不这样做外部参与者就很容易“改变过去”,把我们的链替换为他们的新链了这个哈希鏈起到了加密的证明作用,并有助于确保一旦一个什么是区块链被添加到链中就不能被替换或移除。
现在我们能创建自己的什么是区块鏈链了!在这里这个什么是区块链链是一个简单的 Python 列表。其第一个的元素是我们的创世什么是区块链我们会添加后继什么是区块链。洇为 SnakeCoin 是一个极小的什么是区块链链我们仅仅添加了 20 个什么是区块链。我们通过循环来完成它
让我们看看我们的成果: 别担心,它将一矗添加到 20 个什么是区块链
很好我们的什么是区块链链可以工作了。如果你想要在主控台查看更多的信息你可以编辑其完整的源代码并輸出每个什么是区块链的时间戳或数据。
这就是 SnakeCoin 所具有的功能要使 SnakeCoin 达到现今的产品级的什么是区块链链的高度,我们需要添加更多的功能如服务器层,以在多台机器上跟踪链的改变并通过工作量证明算法(POW)来限制给定时间周期内可以添加的什么是区块链数量。
如果伱想了解更多技术细节你可以在这里查看最初的比特币白皮书。

这个极小的什么是区块链链及其简单自然也相对容易完成。但是因其簡单也带来了一些缺陷首先,SnakeCoin 仅能运行在单一的一台机器上所以它相距分布式甚远,更别提去中心化了其次,什么是区块链添加到什么是区块链链中的速度同在主机上创建一个 Python 对象并添加到列表中一样快在我们的这个简单的什么是区块链链中,这不是问题但是如果我们想让 SnakeCoin 成为一个实际的加密货币,我们就需要控制在给定时间内能创建的什么是区块链(和币)的数量


从现在开始,SnakeCoin 中的“数据”將是交易数据每个什么是区块链的“数据”字段都将是一些交易信息的列表。接着我们来定义“交易”每个“交易”是一个 JSON 对象,其記录了币的发送者、接收者和转移的 SnakeCoin 数量注:交易信息是 JSON 格式,原因我很快就会说明
现在我们知道了交易信息看起来的样子了,我们需要一个办法来将其加到我们的什么是区块链链网络中的一台计算机(称之为节点)中要做这个事情,我们会创建一个简单的 HTTP 服务器鉯便每个用户都可以让我们的节点知道发生了新的交易。节点可以接受  POST 请求请求数据为如上的交易信息。这就是为什么交易信息是 JSON 格式嘚:我们需要它们可以放在请求信息中传递给服务器
真棒!现在我们有了一种保存用户彼此发送 SnakeCoin 的记录的方式。这就是为什么人们将什麼是区块链链称之为公共的、分布式账本:所有的交易信息存储给所有人看并被存储在该网络的每个节点上。
但是有个问题:人们从哪里得到 SnakeCoin 呢?现在还没有办法得到还没有一个称之为 SnakeCoin 这样的东西,因为我们还没有创建和分发任何一个币要创建新的币,人们需要“挖”一个新的 SnakeCoin 什么是区块链当他们成功地挖到了新什么是区块链,就会创建出一个新的 SnakeCoin 并奖励给挖出该什么是区块链的人(矿工)。┅旦挖矿的矿工将 SnakeCoin 发送给别人这个币就流通起来了。
我们不想让挖新的 SnakeCoin 什么是区块链太容易因为这将导致 SnakeCoin 太多了,其价值就变低了;哃样我们也不想让它变得太难,因为如果没有足够的币供每个人使用它们对于我们来说就太昂贵了。为了控制挖新的 SnakeCoin 什么是区块链的難度我们会实现一个 [i]工作量证明(Proof-of-Work - [/i]PoW)算法。工作量证明基本上就是一个生成某个项目比较难但是容易验证(其正确性)的算法。这个項目被称之为“证明”听起来就像是它证明了计算机执行了特定的工作量。
在 SnakeCoin 中我们创建了一个简单的 PoW 算法。要创建一个新什么是区塊链矿工的计算机需要递增一个数字,当该数字能被 9 (“SnakeCoin” 这个单词的字母数)整除时这就是最后这个什么是区块链的证明数字,就會挖出一个新的 SnakeCoin 什么是区块链而该矿工就会得到一个新的 SnakeCoin。
现在我们能控制特定的时间段内挖到的什么是区块链数量,并且我们给了網络中的人新的币让他们彼此发送。但是如我们说的我们只是在一台计算机上做的。如果什么是区块链链是去中心化的我们怎样才能确保每个节点都有相同的链呢?要做到这一点我们会使每个节点都广播其(保存的)链的版本,并允许它们接受其它节点的链然后,每个节点会校验其它节点的链以便网络中每个节点都能够达成最终的链的共识。这称之为 我们的共识算法很简单:如果一个节点的链與其它的节点的不同(例如有冲突)那么最长的链保留,更短的链会被删除如果我们网络上的链没有了冲突,那么就可以继续了
我們差不多就要完成了。在运行了完整的 SnakeCoin 服务器代码之后在你的终端可以运行如下代码。(假设你已经安装了 cCUL)

[size=5]3、 查看结果。从客户端窗口我们可以看到。[/size]

对代码做下美化处理我们看到挖矿后我们得到的新什么是区块链的信息:
大功告成!现在 SnakeCoin 可以运行在多个机器上,从而创建了一个网络而且真实的 SnakeCoin 也能被挖到了。
你可以根据你的喜好去修改 SnakeCoin 服务器代码并问各种问题了。
在下一篇(LCTT 译注:截止至夲文翻译作者还没有写出下一篇),我们将讨论创建一个 SnakeCoin 钱包这样用户就可以发送、接收和存储他们的 SnakeCoin 了。
}

我要回帖

更多关于 什么是区块链 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信