w4lle's Notes

人生如逆旅,我亦是行人。

w4lle's avatar w4lle

区块链(一)区块链和以太坊

区块链是什么

区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络, 也称为价值互联网。中本聪在2008年,于《比特币白皮书》中提出“区块链”概念,并在2009年创立了比特币社会网络,开发出第一个区块,即“创世区块”。

区块链,简单的讲就是一个分布式存储的一个大账本,由一条条的交易记录(block)组成,并且任何人都可以拥有这个账本并且可以存储交易记录,几乎在同一时间这条记录就会被同步到全世界的副本上,这就使得没有人能够修改本地账本中的记录,使其拥有了去中心化的能力。可以理解为这就是区块链技术的基本内容,比特币和以太坊和其他代币都是以此为基础。最有名气的就属比特币了。

考虑现实生活,比如想去找一个陌生人借钱,那么就必须有一个双方都认可的第三方存在,比如银行。由于区块链的存在,这个第三方就可以不需要了。比如,我要借给 A 一块钱,我要在账本上写一条,我要借给 A 一块钱,首先会去检查你有没有一块钱,如果有的话就会记录下来,并且同时在你的账户中扣掉一块钱同时在 A 的账户中增加一块钱,同时同步到所有持有该账本的账户上。

因此,区块链具有以下特点:

  • 去中心化
  • 分布式
  • 密码性安全

以太坊是什么

以太坊是一个全新开放的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。

以太坊相比于区块链有了更进一步的发展,它可以在链上创建一些自动运行的程序称之为智能合约,只要这个智能合约发布到了链上,任何人都无法修改它,并且它是对任何人透明的,任何人都可以看到其代码。任何人都可以发布智能合约,编写智能合约所使用的高级语言也是图灵完备的(意味着语言可以使用计图灵机完成任何图灵机可以完成的任务),这就使得这是可编程的,任何人支付一笔费用 (Gas) 都可以部署编写的智能合约供其他人使用。

考虑现实生活,比如说使用基于以太坊的智能合约存钱,该合约约定月利率1%,那么假如我存了100块钱进去,一个月后来取,那么我能取到的金额必然是 100 + 100 * 0.01。

所以相对于区块链,以太坊多了两个特点:

  • 智能合约
  • 图灵完备

挖矿是怎么回事?

以太坊的本质就是一个基于交易的状态机(transaction-based state machine)。以太坊的状态包含很多交易,这些交易被打包到区块中(block),也就是说每个 block 包含了一系列的交易,每个区块与它的前一个区块链接起来组成区块链。
blockchain
为了让交易被认为是有效的,都必须要经历一个验证的过程,这个过程其实就是挖矿。挖矿实际上就是矿工用他们的计算资源来创建一个包含有效交易的区块出来。然而当你在计算区块的时候别的矿工同样也在计算,如果大家同时提交的话,怎么证明谁的区块是有效的?所以在提交区块到区块链上时,都需要提供一个数学机制的证明,称之为工作量证明(proof of work),所以一个矿工必须要比其他矿工更快的提供出这个证明来抢占区块的有效性将之合并到区块两上,与此同时,别的矿工会及时的将区块链的状态更新至最新。证实了一个新区块的矿工都会被奖励一定价值的奖赏。奖赏就是以太坊使的用一种内在数字代币—以太币(Ether)。

另外,以太坊和区块链的架构不同在于,以太坊区块不仅包含交易记录和最近的状态,还包含区块序号和难度值。

我们能用来干嘛

我们公司 1024 程序员节当天搞了个 HackathonDay 活动,我们报名参加了下,并且选题就是基于区块链的实际应用,虽然基本只有一天的时间来学习区块链的相关知识,我们还是做出了一些 Demo,基本算是入门。
所以接下来的文章会写到基于以太坊搭建一个私有链、创建账户、进行挖矿、进行转账交易、基于 Solidity 语言编写智能合约、部署到区块链上、编写 DApp 来使用智能合约等等。

参考

本文链接: http://w4lle.com/2017/10/27/ethereum-0/

版权声明:本文为 w4lle 原创文章,可以随意转载,但必须在明确位置注明出处!
本文链接: http://w4lle.com/2017/10/27/ethereum-0/