区块链学习记录
一、区块链
区块链是比特币的核心与基础架构,是一个去中心化的账本系统。
区块链人才需求暴涨19倍:国内公有链开发者不足5000 千万年薪挖不动
二、以太坊
以太坊是运行在一个计算机网络中的软件,它确保数据以及称为智能合约的小程序可以在没有中心协调者的情况下被所有网络中的计算机复制和处理。
以太坊的愿景是创建一个无法停止,抗屏蔽(审查)和自我维持的去中心化世界计算机。官方网址是https://www.ethereum.org。
它延伸了比特币的区块链概念:在全球范围的多个计算机上验证,存储,和复制交易数据(因此术语叫“分布式账本”)。
以太坊(Ethereum)在这个概念上更进一步,使在全球范围的多个计算机上运行代码成为现实。
比特币用来分布式储存数据的,以太坊用来分布式储存数据并且计算。
这些小型的电脑运行程序叫做智能合约,合约由参与者在他们自己的机器上通过一种称为 ”以太坊虚拟机“的操作系统运行。
智能合约可以认为是在以太坊虚拟机上运行的代码块。
智能合约是一段存储在以太坊区块链上的简短计算机程序。用以太币可以激活或者运行这些代码。
在以太坊你可以新建一个包含一些代码的账户,在一次交易中把它上传到以太坊区块链上,这样你就创建了一个智能合约。一旦合约被上传,它会像自动唱机一样运转--当你想要运行它的时候你应该创建一个交易,向合约支付ETH,如果合约需要,你可能还要提供一些其他信息。
每个挖矿计算机会通过以太坊虚拟机在它们的计算机上运行智能合约,作为他们参与挖矿进程的一部分,然后得出一个输出的结论。
ETH(以太币):以太坊内置的第一加密货币,用来支付智能合约的运行。
以太坊(分叉)
2016年7月,以太坊开发团队通过修改以太坊软件的代码,在第1920000区块强行把The DAO及其子DAO的所有资金全部转到一个特定的退款合约地址,从而“夺回”黑客所控制的DAO合约的币。从而形成两条链,一条为原链(ETC),一条为新的分叉链(ETH),各自代表不同的社区共识以及价值观。
三、比特币
比特币系统的脚本(Script)——交易生成和验证的原理(第一部分)(初稿)
哈希加密算法 MD5,SHA-1,SHA-2,SHA-256,SHA-512,SHA-3,RIPEMD-160 - aTool
比特币:
比特币是由一系列概念和技术作为基础构建的数字货币生态系统(去中心化可信任)。
去中心化:P2P(peer to peer)
可信任:是因为整个区块链的越长,计算复杂度越高,所需算力越多,推翻重建的可能性越小,也就越可信。
比特币是一种协议、一种网络、一种分布式计算创新的代名词
比特币网络:由安装了比特币客户端的计算机,组成的计算机节点(钱包,路由,矿工,完整区块链等)集合。
比特币数量:一个数字
钱包:比特币客户端。钱包是多个地址和解锁资金密钥的简单集合。
比特币地址:加密唯一数字地址串(私钥+公钥)
比特币地址产生的完整过程,从私钥、到公钥(椭圆曲线上某个点)、再到两次哈希的地址,最终产生Base58Check格式的比特币地址
挖矿(mining):
挖矿就是验证比特币交易的同时参与竞赛来解决一个数学问题。
收集交易,打包到区块,求工作量证明解(解hash值);挖矿的目标是找到一个使区块头哈希值小于难度目标的nonce。
比特币系统的信任是建立在计算的基础上的。交易被包在一起放进区块中时需要极大的计算量来证明,但只需少量计算就能验证它们已被证明。
挖矿的过程就是找到x使得:
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
挖矿的作用
▷ 挖矿在构建区块时会创造新的比特币,和一个中央银行印发新的纸币很类似。每个区块创造的比特币数量是固定的,随时间会渐渐减少。
▷ 挖矿创建信任。挖矿确保只有在包含交易的区块上贡献了足够的计算量后,这些交易才被确认。区块越多,花费的计算量越大,意味着更多的信任。
这个工作量证明算法指的用SHA256加密算法不断地对区块头和一个随机数字进行哈希计算,直到出现一个和预设值相匹配的解。第一个找到这个解的矿工会赢得这局竞赛并会将此区块发布到区块链中。
矿工:通过计算解题的计算机
矿池:一堆矿工的集合
交易:
比特币通过基于密码学的公私钥体系,交易的发起者可以使用自己的私钥对交易进行签名,其他人可以使用其公钥进行验证,这就从数学上保证了用户资金的安全。
交易可以立即被其他人看到,但只有当其被包含在新开采的区块中,才是“被信任的”。
(输入:btc的来处;输出:btc的去处;)
交易过程:构建(查找未消费的输出作为交易输入,创建交易输出)----->发起----->广播----->确认(新区块去确认)
比特币交易建立和签名时不用连接比特币网络。只有在执行交易时才需要将交易发送到网络。
签名如何验证呢?在比特币持有者消费这笔输出时,即将之前的输出,变成此次的输入,需要私钥签名和此未消费的输出对应的钱包地址来匹配。
交易确认:我们把包含在区块内且被添加到区块链上的交易称为“确认”交易,交易经过“确认”之后,新的拥有者才能够花费他在交易中得到的比特币。
区块:一个账单,一种数据结构
区块主标识符是它的加密哈希值,一个通过SHA256算法对区块头进行二次哈希计算而得到的数字指纹。产生的32字节哈希值被称为区块哈希值,但是更准确的名称是:区块头哈希值,因为只有区块头被用于计算。
请注意,区块哈希值实际上并不包含在区块的数据结构里,不管是该区块在网络上传输时,抑或是它作为区块链的一部分被存储在某节点的永久性存储设备上时。相反,区块哈希值是当该区块从网络被接收时由每个节点计算出来的。区块的哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块。
区块链:分布式账本(全部账单)
区块链分叉:虽然每个区块只有一个父区块,但可以暂时拥有多个子区块。每个子区块都将同一区块作为其父区块,并且在“父区块哈希值”字段中具有相同的(父区块)哈希值。一个区块出现多个子区块的情况被称为“区块链分叉”。
所有权:比特币的所有权是通过数字密钥、比特币地址和数字签名来确立的。
公钥和私钥之间的数学关系,使得私钥可用于生成特定消息的签名。此签名可以在不泄露私钥的同时对公钥进行验证。
支付比特币时,比特币的当前所有者需要在交易中提交其公钥和签名(每次交易的签名都不同,但均从同一个私钥生成)。比特币网络中的所有人都可以通过所提交的公钥和签名进行验证,并确认该交易是否有效,即确认支付者在该时刻对所交易的比特币拥有所有权。
==============
熵:在信息论中代表随机变量不确定度的度量。详情
=====
一、私钥,公钥,地址,钱包
比特币钱包就是一个电脑或者手机的客户端,安装以后客户端会自动生成你的比特币wallet钱包文件(类似你的银行卡,上面写有你的账号),
这个文件里面存放着你的比特币信息,包括你的收款地址(类似于你的银行卡账号)、还有你的私钥(类似于你银行卡的密码)。
这个wallet文件就是你的钱包了。
比如我从OKCoin上面买了比特币,我可以将比特币转到我的收款地址上面,待网络确认了,那比特币就会存到我的wallet钱包里面了。
查看私钥:dumpprivkey 钱包地址(如:15YtPkrChjpCWJX49saJLSJXyzoDnquOPW)
导入私钥:importprivkey 私钥
因为其中的数学运算是单向的,所以私钥可以转换为公钥,但公钥不能转换回私钥。
比特币地址可以代表一对公钥和私钥的所有者,也可以代表其它东西,比如会在132页的“P2SH (Pay-to-Script-Hash)”一节讲到的付款脚本。
===========
比特币钱包只包含私钥而不是比特币。每一个用户有一个包含多个私钥的钱包。
钱包中包含成对的私钥和公钥。用户用这些私钥来签名交易,从而证明它们拥有交易的输出(也就是其中的比特币)。
比特币是以交易输出的形式来储存在区块链中(通常记为vout或txout)。
比特币软分叉:是指比特币交易的数据结构(这就是被广泛流传的“共识”)发生改变时,未升级的节点可以验证已经升级的节点生产出的区块,
而且已经升级的节点也可以验证未升级的节点生产出的区块。
比特币硬分叉:是指比特币区块格式或交易格式(这就是广泛流传的“共识”)发生改变时,未升级的节点拒绝验证已经升级的节点生产出的区块,
不过已经升级的节点可以验证未升级节点生产出的区块,然后大家各自延续自己认为正确的链,所以分成两条链。
分叉备注:
此处的分叉是指对共识(交易数据结构格式,区块数据结构格式)的修改。
软分叉和硬分叉主要区别是新旧节点相互兼容性
四、比特币与以太币对比
五、EOS
EOS并不是官方的缩写,你可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统。目前区块链世界有以下几个痛点没有解决:难以扩展(如Bitcoin扩容之争)、代价昂贵(以太坊智能合约执行的每一步都需要支付费用,随着交易量的增加,交易费相应增加)、缺乏互操作性(在区块链上开发dApp不是很容易,需要自己写很多模块)等等。EOS是EOS.IO软件引入的一种新的区块链架构,旨在实现分布式应用的性能扩展。注意,它并不是像比特币和以太坊那样是货币,而是基于EOS.IO软件项目之上发布的代币。
EOS有哪些技术优点?
1、EOS通过创建一个对开发者友好的区块链底层平台,类似区块链的操作系统,性能强大,可以支持多个应用程序同时运,可以同时支持多种编程语言,为开发dApp的开发者提供底层模块,降低开发门槛,就像是微软的windows,你说微软值不值钱。
2、EOS通过并行链和DPOS的方式解决了延迟和数据吞吐量的难题。EOS能够实现每秒百万级的处理量,而目前比特币是每秒7笔,以太坊是30-40笔,EOS的这一超强能力吊打比特币和以太。如最近的CryptoKitties| Collect and breed digital cats! 这个特别火的ETH游戏,仅仅一个游戏就占了ETH 15%左右的吞吐量,要是同时上个七八个类似的游戏,ETH估计就要挂掉了,想想就很吓人。无法拓展带宽的ETH在吞吐量上会有很大的挑战,而EOS能解决上面的问题。
其他