0

区块链学习笔记

 2 years ago
source link: http://wwj718.github.io/post/%E5%B7%A5%E5%85%B7/blockchain-note/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

区块链学习笔记

2016-04-28

未来正不断到来,而当下不断成为过去

过去人们眼中惊世骇俗的事物,今天的人已经习以为常,他们不能相信曾经居然有人会对此感到惊讶

他们同时又惊讶于,当下居然有人会激进和愚蠢到相信眼前这些惊世骇俗的事物在将来能被人广泛接受。它们多么有悖于今天的常识啊

当尼尼微城昌盛一时,新福音书已经老旧

  • 区块链(英语:Blockchain或Block chain)是一种分布式数据库,起源自比特币。
  • 区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
  • 区块链在网络上是公开的,可以在每一个离线比特币钱包数据中查询。

“原理"和"意义/用途"

区块链的一些要素

  • 包含一个分布式数据库
  • 分布式数据库是BC的物理载体,BC是交易的逻辑载体,所有核心节点都应包含该条BC数据的全副本
  • BC按时间序列化Block,且是整个网络交易数据的主体
  • BC只对添加有效,对其他操作无效
  • 基于非对称加密的公私钥验证
  • 记账节点要求拜占庭将军问题可解/避免
  • 共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。
  • 共识过程能够解决double-spending问题

它几乎无懈可击。首先你不能凭空造出比特币,只能挖矿获得;其次你无法伪造交易,无法控制不属于你的账户。一旦交易被确认,几乎无法取消。我这里说“几乎”,是因为有“51%攻击”的存在。而51%攻击条件非常苛刻。

  • 密码学
    • 非对称加密,公钥和私钥

一些理解角度

  • 比特币本质是构造了一个永不停息、无坚不摧的时间戳系统。

#比特币 参考比特币 (Bitcoin) 系统是如何运行的?

公钥私钥是现代密码学分支非对称性加密里面的名词,通常都是用公钥加密信息,用私钥解密信息,为什么要这样? 因为你看电视剧的时候,发电报那种都是对称性加密,这种加密方式缺点是显而易见的,如果被人知道了密钥和加密方法,于是按照加密方法反着来就能解密。 一直到非对称性加密这种情况才有所改观,公钥就是可以对全世界公开的密钥,比如你和google通讯,用google给的1024位的公钥加密,送到google那里只有他有对应的私钥,只有他能解密,于是就保证了通讯安全

椭圆曲线签名算法(ECDSA)

  • 只要知道私钥,可以算出相应的公钥;
  • 你用私钥签名过的东西,可以用公钥算一下是不是你签的;

比特币其实没有钱包,只有交易账单,整个比特币就是一大堆交易账单

比特币的账户,就是一段公钥

比特币的账单

FROM(谁发送的,包括两部分)
Previous tx: 你要花的这笔钱的那个账单的id, 也就是说,你花的任何一笔钱都应该有人转给你过,需要出示那个账单的id
scriptSig: 你对这笔交易的签名,就是把单子用你的私钥做hash,只有你能做这个hash

TO(谁接受,包括两部分)
Value: 要发多少
scriptPubKey: 对方的公钥,比特币账户就是一段公钥

关于以太坊

简而言之,以太坊(Ethereum)是一项将比特币中的一些技术和概念运用于计算领域的创新。
比特币被认为是一个系统,该系统维护了一个安全地记录了所有比特币账单的共享的全球账簿。以太坊,则是利用了很多跟比特币类似的机制(比如区块链技术和 P2P 网络),来维护一个共享的计算平台,这个平台可以灵活且安全地运行用户想要的任何程序(当然也包括类似比特币的区块链程序)

以太坊要实现的是一个内置了编程语言的区块链协议,由于支持了编程语言,那么理论上任何区块链应用都可以用这门语言进行定义,进而作为一种应用,运行于以太坊的区块链协议之上(译注:该协议的意义与互联网时代的 TCP/IP 协议有的一拼)

比特币经常被称之为"全球账簿",以太坊可以被看作一台“全球计算机”

本质上,以太坊的目标,就是将区块链技术所具有的去中心化、开放、和安全这三大特点,引入到几乎所有能被计算的领域。

####公钥加密系统 Alice有一把公钥和一把私钥。她可以用她的私钥创建数字签名,而Bob可以用她的公钥来验证这个签名确实是用Alice的私钥创建的,也就是说,确实是Alice的签名

####点对点网络 就像BitTorrent, 以太坊分布式网络中的所有节点都地位平等,没有中心服务器

####区块链 区块链就像是一个全球唯一的帐簿,或者说是数据库,记录了网络中所有交易历史。

####节点 你可以运行节点,通过它读写以太坊区块链,也即使用以太坊虚拟机。完全节点需要下载整个区块链。轻节点仍在开发中。

####矿工 挖矿,也就是处理区块链上的区块的节点。

####以太币 缩写ETH。一种你可以购买和使用的真正的数字货币

####工作量证明 矿工们总是在竞争解决一些数学问题。第一个解出答案的(算出下一个区块)将获得以太币作为奖励

####Gas (汽油) 在以太坊上执行程序以及保存数据都要消耗一定量的以太币,

####DApp 以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App)。DApp的目标是(或者应该是)让你的智能合约有一个友好的界面,外加一些额外的东西,例如IPFS(可以存储和读取数据的去中心化网络,不是出自以太坊团队但有类似的精神)

##运行以太坊节点可用的客户端 Go语言实现的客户端geth (go-ethereum)。 testrpc:使用了Python客户端pyethereum

##写智能合约用的编程语言

  • 类似Javascript的Solidity(主导)
  • 类Python的Serpent

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK