jjzjj

漫画解析:谁叫的区块链,来门口取一下!

runoob 2023-03-28 原文

本文技术要点

取快链?你想说的是区块链吧?

要说清楚区块链,我们先来讲个故事。

你一定听说过三人成虎的故事吧?

假设一个人告诉你,不好了,大街上有只老虎,你相不相信?

我去,你咋不按常理出牌啊,你要说不相信!

重来!我们说的是真老虎!

好!非常好!!影帝级的演出!!!

继续,这时候换做一堆人告诉你这件事!

我们再换一种场景。

如果一个德高望重、你十分信任的老者告诉你这件事,你又会怎么想?

是的,这就是所谓的信任的力量。你不信任一个没有足够信用度的单独个体,但你会信任一堆个体或者有足够信用度的单独个体

在现实社会中,银行就是这个有足够信用度的个体(中心)。

支付宝也是类似这个功能。

但以银行、支付宝等作为信用中介是需要成本的,而我们普通大众就要为这庞大的信用成本买单。所以才会造就金融业是最赚钱的行业、拥有支付宝的蚂蚁金服利润惊人。

要去除银行类等中心机构的信用背书?

那就可以用我们上面提到过的"一堆个体",这也是区块链技术的核心。

区块链本质上是解决信任问题、降低信任成本的技术方案,目的就是为了去中心化,去信用中介。

区块链是比特币的底层技术。

比特币(BitCoin)的概念最初由中本聪在2009年提出,你把它理解成数字货币即可。

我们以比特币交易为例来看看区块链具体是如何操作的。

1、把每笔交易在全网广播。让全网承认有效,必须广播给每个节点。

2、矿工节点接收到交易信息后,都要拿出账簿本记载该次交易。

一旦记录,就不可撤销,不能随意销毁。

矿工节点是通过电脑运行的比特币软件对交易的进行确认的。

为了鼓励矿工的服务,对于其所记录和确认的交易,系统为矿工提供25个比特币作为奖励。(这个奖励数量,系统设定每4年减半)

奖励只有一份,那就看谁记录的快呗。

为了减少这种情况,系统会出一道十分钟的运算题,谁能最快解出值,谁就将获得记录入账权利,并赢得奖励。

对了,这里可以给大家看一道据说是徐汇区幼儿园升小学的运算题。

别急啊,你试试看,我第一次反正是做错了。

%&*%#@%,好吧,我无力反驳。

大家可以把计算结果写在留言中,答案下期公布。

说远了,我们再说回来。

前述区块链中所运用算法并不是简单的计算题,而是使用哈希散列(Hash)算法。

哈希散列是密码学里的经典技术,可以用来验证有没有人篡改数据内容。

3、获得记账权的矿工将向全网广播该笔交易,账簿公开,其他矿工将核对确认这些账目。

交易达到6个确认以上就成功记录在案了。

矿工记录的时候,还会将该笔交易盖上时间戳,形成一个完整时间链。

4、当其它矿工对账簿记录都确认无误后,该记录就确认合法,矿工们就进入了下一轮记账权争夺战。

矿工的每个记录,就是一个区块(block),会盖上时间戳,每个新产生的区块严格按照时间线形顺序推进,形成不可逆的链条(chain),所以叫做区块链(Blockchain)。

而且每个区块都含有其上一个区块的哈希值,确保区块按照时间顺序连接的同时没有被篡改。

这时候我们再看对区块链的原始定义就能理解了:区块链是一种分布式数据库,是一串使用密码学方法相关联产生的数据块,每个数据块都包含了一次网络交易信息,用于验证其信息的有效性和生成下一个区块。

若两个人同时上传,虽然这个概率很小,但是若发生,我们就看最后的区块链哪条更长,短的那条就失效。这就是区块链中的"双花问题"(同一笔钱花两次)。

对于要制作虚假交易,除非你说服了全网里超过51%的矿工都更改某一笔账目,否则你的篡改都是无效的。

网络中参与人数越多,实现造假可能性越低。

这也是集体维护和监督的优越性,伪造成本最大化。

说服51%的人造假还是灰常灰常难的。

是的。

好了,我们总结下,区块链主要有以下核心内容:

1、去中心化

这是区块链颠覆性特点,不存在任何中心机构和中心服务器,所有交易都发生在每个人电脑或手机上安装的客户端应用程序中。实现点对点直接交互,既节约资源,使交易自主化、简易化,又排除被中心化代理控制的风险。

2、开放性

区块链可以理解为一种公共记账的技术方案,系统是完全开放透明的,账簿对所有人公开,实现数据共享,任何人都可以查账。

开放效果类似这样:

3、不可撤销、不可篡改和加密安全性

区块链采取单向哈希算法,每个新产生的区块严格按照时间线形顺序推进,时间的不可逆性、不可撤销导致任何试图入侵篡改区块链内数据信息的行为易被追溯,导致被其他节点的排斥,造假成本极高,从而可以限制相关不法行为。

原文作者:三折人生

原文地址:http://if.pedaily.cn/news/201608/20160830161298426.shtml

有关漫画解析:谁叫的区块链,来门口取一下!的更多相关文章

  1. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  4. ruby-on-rails - 我更新了 ruby​​ gems,现在到处都收到解析树错误和弃用警告! - 2

    简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und

  5. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  6. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  7. ruby - 如何使用 Nokogiri 解析纯 HTML 表格? - 2

    我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315

  8. python - 帮我找到合适的 ruby​​/python 解析器生成器 - 2

    我使用的第一个解析器生成器是Parse::RecDescent,它的指南/教程很棒,但它最有用的功能是它的调试工具,特别是tracing功能(通过将$RD_TRACE设置为1来激活)。我正在寻找可以帮助您调试其规则的解析器生成器。问题是,它必须用python或ruby​​编写,并且具有详细模式/跟踪模式或非常有用的调试技术。有人知道这样的解析器生成器吗?编辑:当我说调试时,我并不是指调试python或ruby​​。我指的是调试解析器生成器,查看它在每一步都在做什么,查看它正在读取的每个字符,它试图匹配的规则。希望你明白这一点。赏金编辑:要赢得赏金,请展示一个解析器生成器框架,并说明它的

  9. ruby - 如何用 Nokogiri 解析连续的标签? - 2

    我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(

  10. ruby - 有人可以解释一下在 Ruby 中注入(inject)的真实、通俗易懂的用法吗? - 2

    我正在学习Ruby,遇到了inject。我正处于理解它的风口浪尖,但当我是那种需要真实世界的例子来学习一些东西的人时。我遇到的最常见的例子是人们使用inject来添加一个(1..10)范围的总和,我不太关心这个。这是一个任意的例子。在实际程序中我会用它做什么?我正在学习,所以我可以继续使用Rails,但我不必有一个以Web为中心的示例。我只需要一些我可以全神贯注的目标。谢谢大家。 最佳答案 inject有时可以通过它的“其他”名称reduce更好地理解。它是一个对Enumerable进行操作(迭代一次)并返回单个值的函数。它有许多有

随机推荐