专栏首页java达人通过比特币了解以太坊(1)

通过比特币了解以太坊(1)

作者:Mike Goldin

图标:Eva Shon

译者:java达人

来源:https://media.consensys.net/time-sure-does-fly-ed4518792679

(点击阅读原文前往)

区块链

区块链基本上是状态变更的公共记录。任何人都可以审查区块链随时间变化的状态,并通过数学确定性证明这些交易是按照区块链的规则进行的。以比特币为例,这些规则很简单:比特币不能被重复使用,它们的来源必须追溯到一个对有效区块的挖掘(更多关于挖掘的内容请看后续)。为了开始我们的旅程,我建议你阅读比特币白皮书,即使你对密码学一无所知。稍后我们将返回到密码基础。比特币的白皮书很短,只有前六个部分与我们真正有关。

Satoshi Nakamoto的比特币白皮书: https://bitcoin.org/bitcoin.pdf [阅读1–6部分]

区块链交易的密码学基础

作为一个在密码学方面没有什么背景的人,我发现自己开始困惑于白皮书对交易的描述。我们应该清楚,这是一种机制,目的是通过追踪资产相关所有者的历史记录,在给定的时间内证明对某项资产的所有权。但是什么是公钥,散列呢?这些如何帮助我们证明资产的所有权?如果你从未上过密码学课,请观看可汗学院的视频对这些重要的功能进行的描述。(java达人:国内可看数字签名是什么?)

(Satoshi Nakamoto,比特币:点对点电子现金系统)

现在让我们回顾一下白皮书的交易图。在这里,我们将所有者2的公钥和之前的交易(在其中,所有者1拥有比特币)转换成唯一的摘要(哈希函数的输出)。然后,用所有者1的私钥对摘要签名。在未来,任何人都可以通过将所有者2声明的状态变化输入签名验证算法来验证他对比特币的所有权:一笔比特币和所有者2的公钥(标志着一笔比特币向所有者2转移),所有者1的公钥(表示这笔比特币是所有者1向他转移的),和交易的签名表单(可在区块链上公开的摘要,交易发生时被记录)。只有在所有者2指定的确切状态变化的确是用所有者1的私钥签名时,所有者1的公钥才能确认签名的交易摘要在签名的交易链上的有效性。这个过程可以递归地重复回到比特币的原点,证明整个所有权链条是有效的。

你可能在这一点上有很多问题,并且已经在考虑边缘案例——所有权链是如何开始的?比特币的具体金额是如何转帐的?令人惊讶的是,你需要理解比特币的并不多。接下来,我们将讨论三到六部分的白皮书,并找出其中一些边缘案例是如何解决的。

挖矿在区块链实现网络一致性方面的作用

所有比特币交易都向整个网络广播,这些交易由验证交易有效性的矿工收集(主要使用前面描述的方法),并将所有有效的交易记录到“块”中。块的内容和一个递增的随机数(称为“nonce”)随后被反复尝试计算,直到结果输出包含一定数量的前导零。网络动态调整必要的前导零个数(或“难度”),以便控制平均每10分钟开采一个区块。由于散列算法的结果是不可预知的,要找到被网络其他节点接受的有效散列需要运气和CPU能力。人们拥有的计算能力越强,他们在网络其他人之前找到有效散列的机会就越大。当有效块被“挖掘”时,它被广播并由网络的其他节点进行测试。其他节点在给定最新标准块的情况下,在接受该块作为最新标准网络状态之前,测试所包括的状态转换是否有意义,所有用于有效性验证的交易签名,这个区块和所提供的nonce。然后将该块添加到每个节点本地数据库中的原有区块链的头部

所有权链如何开始? 比特币协议规定,每个区块都允许向区块矿工提供一笔25 BTC的交易,其中这些25 BTC是凭空创造的。 这提供矿工支持网络的激励。 如果一个比特币的所有权链可以追溯到这些特殊交易中的一种,那么比特币可以被验证为非伪造。 的确,这是新比特币创造的唯一途径。

控制51%网络的恶意用户用比特币支付他的咖啡,可以喝着他的饮料,然后挖掘一个区块(从他刚刚交易之前的状态开始),欺骗性地略去了他的咖啡购买。 即使这个网络在他开始挖掘欺诈链时抢先挖掘了几个区块,他那51%的网络马力将不可避免地赶上。 因为比特币协议认为最长的链条才是规范的,才会被接受,即使存在被遗弃的区块子链暗示他的欺骗行为,恶意用户也会逃脱处罚

Extra Credit:比特币中的UTXO 在比特币中,并不持有可以从其中撤回和存入的无限可分的货币单位。 相反,比特币用户处理“未使用的交易输出”(UTXO)。 如果矿工新挖了25BTC,想要买1 BTC咖啡,他们必须指定整个25 BTC(UTXO)作为交易的输入,并为交易指定两个输出:其中一个输出发送一个 BTC到商家的地址,第二个输出指定24比特币作为“充值”发送回购买者的地址。 要购买另一杯咖啡,该24比特币作为一个UTXO。 多个UTXO组合包含在一个交易输入中以交换更昂贵的物品,而作为新的单个UTXO被商户接收。 以太坊不使用UTXO - 它的帐户余额是可分的。

您现在拥有了解比特币区块链基本原理所需的全部知识。 这是让人头晕目眩的东西! 如果你还没有完全理解它,请不要失落:试着带着它睡上几天,这些知识会在你的梦中组合起来。 一旦如此,你可以开始想象如何运用像比特链区块链那样的技术,在输入和程序代码被公开共享时,验证任意复杂计算的公共输出。 实际上,我们将在本系列的第二部分中探讨这一点。 回头见!

本文分享自微信公众号 - java达人(drjava)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分分钟了解区块链和挖矿

    可能比较难懂,这次发一个简版的图文并茂的视频,方便大家理解。里面有数字签名方面的内容,不了解的可以先看这里:数字签名是什么?

    java达人
  • 以太坊:比特币+一切可能

    来源:https://medium.com/@ConsenSys/ethereum-bitcoin-plus-everything-a506dc780106

    java达人
  • Redis与Memcached的区别

    传统MySQL+ Memcached架构遇到的问题   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多...

    java达人
  • 解密区块链(九):区块扩容折中方案

    区块链的每个区块,都是用来承载某个时间段内的数据的,每个区块通过时间的先后顺序,使用hash散列值的方式(或者其他方式)将其串连起来,形成了一个完整的分布式数据...

    企鹅号小编
  • 快速了解一下区块链技术

    都说跟着浪潮、猪也能起飞。所以许多人在完全不知道什么是区块链的情况下,就已经深陷各种山寨币的交易中,中国大妈们也是浴血奋战在前线。各种漂亮的白皮书,华丽的前景,...

    广州闪链科技
  • 比特币项目

    比特币项目是区块链技术第一个大规模的成功应用,并且是首个得到实践检验的数字货币实现,在金融学和信息技术历史上都具有十分重要的意义。 简介 比特币是基于密码学和经...

    首席架构师智库
  • 糖果吃了那么多,你真的知道比特币分叉是咋回事吗?

    简洁的语言 科学的归纳 艺术的区块链 最近有比特币的小伙伴除了感受有力而魔性的市场震荡外,想必还吃了不少糖果(分叉币)吧? ? 那么比特币为啥要分叉捏? ? 这...

    企鹅号小编
  • 区块链技术背后的运行逻辑

    ? 区块链技术可能是自互联网技术以来最伟大的发明。区块链可以在不需要有中央权威机构的情况下或不需要双方信任的情况下交换价值或财富。想像一下你和我要赌明天旧金...

    点滴科技资讯
  • 加密货币的本质

    去年,比特币暴涨,其他币也像雨后春笋一样冒出来,已经有1000多种了。 很多人都在问,加密货币(cryptocurrency)的时代,真的来临了吗?将来会不会人...

    wangxl
  • 如何用bitcoinj开发java比特币应用

    当你希望使用java开发比特币应用,或者希望应用与比特币对接时,bitcoinj是最佳的选择,它是最早也是目前最成熟的比特币java开发包,bitcoinj包含...

    用户1408045

扫码关注云+社区

领取腾讯云代金券