《区块链技术指南》读书笔记(一)

作者: loaf 分类: IT 发布时间: 2018-04-04 11:19

以比特币为例:
区块的结构:挖矿:
所谓挖矿,就是穷举随机数算法,把上一个区块的哈希值 加上10分钟内的全部交易单打包,再加上一个随机数,算出一个256位的字符串哈希值,输入的随机数Nonce使哈希值满足一定条件就获得这个交易记账权。
如果有两个矿工都算出了新的区块,加以链接,主链上就会出现 分叉。这时,通过后续矿工的选择来自然淘汰一个分叉。
这就相当于矿工生产“账簿”,这个账簿也可以理解为纸币,但它的价值需要别人承认才行。
时间戳和不可篡改性:用时间戳来保证其不可篡改性。
分布式数据库:多节点,冗余
UTXO交易模式:Unspent Transaction Outputs是未花费的交易输出。简单理解,UTXO就是当前可用的比特币总量,货币池子。以一个账单链为例,UTXO,就是记录当前可用金额的账单页。每个币有前驱无后驱。要想消费或者转账,只能从这个池子里取,记到新的账簿中,并且记录当前来源的私钥。
哈希函数:防篡改,又便于比较
Merkle树:基于哈希函数,得到交易链的唯一值
双重支付:保证一笔钱不被支付两次。
P2P网络:网络上的节点可以是全节点也可以是轻量级节点,全节点包括所有的交易数据,而轻量节点只有部分数据,轻量节点可以通过简易支付验证方式(SPV)向邻近节点请求数据来完成验证更新。
加密算法:比特币中使用的是椭圆曲线加密算法ECC
数字签名:对信息哈希,然后将值用私钥加密,接收方用公钥解开后,验证一下。
隐私模型:准匿名,因为可以通过交易地址做关联分析。
框架:架构的特点:
去中心化、可靠数据库、开源可编程、集体维护、安全可信、准匿名性
区块链运作的核心技术:
共识机制目前主要有4类:PoW、PoS、DPoS、分布式一致性算法这里涉及到一个”拜占庭将军问题“,可参见这里解锁脚本:脚本是区块链上实现自动验证、自动执行合约的重要技术。
P2PKH(Pay-to-Public-Key-Hash):支付给公钥的哈希地址
P2SH(Pay-to Script-Hash):支付脚本的哈希地址
可以理解为,我把自己的比特币支付给另一个人,他提供了接收地址,我不是把钱直接交给他,而是把钱放在钱包里给他,钱包上写了对方的公钥,对方只要用自己的私钥打开,就收到了,只是P2PKH。如果我是在钱包上加上一系列的命令,第一步,执行A,第二步执行B……,这些都完成后,钱包才自动打开,就是P2SH了。
交易规则:
一个区块链的交易可以是一次支付转账,也可以是一个智能合约的执行。
交易的优先级:可以自定义规则
Merkle证明:保证交易不被篡改,同时验证交易是否包含在一个特定的区块中。
RLP:Recursive Length Prefix递归长度前缀编码是Ethereum中的对象序列化的一个主要编码方式,其目的是对任意嵌套的二进制数据的序列进行编码。
区块链交易流程:以太坊:

以太坊的目的是对脚本、竞争币和链上元协议(on-chain meta-protocol)等概念进行整合和提高,使得开发者能够创建任意的基于共识的、可扩展的、标准化的、图灵完备的、易于开发和协同的应用。
以太坊是一个通用的全球性区块链,可以管理金融和非金融类型应用的状态。以太坊的新颖在于其神奇的计算机网络,它促成了一种新型的软件应用,真正的去中心化应用。将信任逻辑嵌入小程序里,运行在区块链上。而与比特币相比,以太坊建立了一种新的密码学技术基础框架,在其上开发应用更加容易,并对轻客户端友好,同时允许应用共享一个可行的经济环境和可靠的区块链安全。以太坊在全球范围内激发了商业和社会创新,为前所未有的去中心化应用打开了大门。从长远来看,它所带来的改变将影响全球经济和控制结构。
以太坊是个平台和编程语言,包括数字货币以太币(Ether),以及用来构建和发布分布式应用的以太脚本(EtherScript)。

 

以太坊内置有图灵完备编程语言的区块链。图灵完备,就是说这个语言是完整的编程语言,有可能会出现死循环,为了防止这一点,就得引入Gas概念,保证代码的运行一定会中止(Gas用完了)

以太坊的去中心化应用——DApp,一个DApp是由智能合约和客户端代码构成。

Augur:在线预测

Maker:金融类去中心化的自治组织。

WeiFund,众筹平台

Boardroom,DAO管理平台

Ujo Music,音乐版权管理平台。

贷券(Decentralized Autonomous Insured Bond),一种可转让的、彼此等价可互换的“加密债券”。