区块链的概念,区块链技术现在或未来主要可以用在哪些行业?
所谓的区块链主要就是解决交易中的信任和安全问题!同时也是2017年最热的话题,大家可以微信搜索添加(三点钟无眠区块链)来了解!
那么针对区块链这个问题提出了四个技术创新:1.分布式账本。交易记账由分不在不同的地方的多个节点共同完成,任何一个节点记录的都是完整的账目,所以可以作为参与监督交易的合法性,同样的还可以作为证据以避免账面的作假!
2.由于记账节点多,理论上来说如果所有节点被破坏就会导致账目的丢失,而区块链技术的对称加密和授权技术会保证账目数据的安全!
3.所有记账节点之间达成共识认定一个记录的有效性,从而来防止篡改的手段!
4.智能合约。基于这些不可篡改可信认的数据自动化的执行一些预先定义的规则和条款!
因此区块链技术可以应用到保险、医疗数据、金融科技、网络安全等等各领域!
(希望有最前沿知识的一起来讨论,不喜勿喷!可扫下面二维码关注!)
目前的发展阶段是?
区块链已经不再是一个让大众颇感陌生的词。区块链正在从学术圈、投资圈、IT圈逐步走向普通民众。随着比特币等虚拟货币的火热、随着ICO这种新的投资方式的火爆,越来越多的人开始听说区块链这个词,并且或多或少的都对区块链有一些基本认识了。
区块链--比特币
区块链是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、无法篡改、无法抵赖的技术体系。
(摘自《可信区块链认证系列标准》)
区块链的基础是P2P分布式网络、加密算法和共识机制。比特币是区块链技术的第一个成功的应用。在电子支付方式非常流行的今天,比特币是很好理解的一个金融体系。Alice需要支付给Bob 5元钱,Alice可以通过支付宝转账给Bob 5元钱即可。本质上就是支付宝在Alice的账户上减少了5元,在Bob账户上增加了5元。
比特币本质上是一个多人记账的账本。Alice有5个比特币,转账给Bob,只需要在账本上记录下来这个交易,转账就成功了。比特币实现了所有人的账目都是一模一样的。有了这样强大的一个账本,我们就不需要支付宝、不需要银行等第三方机构帮助我们来记账,我们每个人都可以参与到比特币的记账工作中。密码学保证了只要我们不丢失自己的密钥,别人就无法伪造我们的交易,进而转走我们的比特币。
除了转账之外,比特币还需要一个发行货币的机制,确保Alice不是随便凭空生成了一些比特币转账给了Bob,而是必须被全部的记账者所接受的方式获得了比特币。获得比特币的方式,除了别人转给自己以外,只能通过“挖矿”来获得。由于所有的记账者都接受这些基本的设定,因此,大家维护的账本始终能保持一致。
目前仍有很多人把区块链技术等同于分布式总账技术。我们认为分布式总账、区块链和比特币的关系下图描述的比较清楚:
区块链--什么是“块”
区块链是实现无中心的分布式总账的一种技术。除了采用块、链结构的典型区块链以外,还有其他的方式实现分布式总账这个需求。总账技术的基本单元是“交易”,整个账本是由一条条的交易构成。
“块”,类似于账本中页,每页都记录了若干条交易,把一页一页的账页按照时间顺序装订起来,就形成了一个完整的账本——区块链。
“块”,是交易的容器;
“块”,通过密码学算法相连接,形成了按照时间序列的“链”。
这种组织账本的好处是由密码学算法保证了无法篡改链上的单独的交易,除非整体性的篡改。因此,区块链相比于分布式总账技术,多出了“密码学安全”这一特性。
区块链--实现形式
“智能合约”是在学习区块链技术时常常见到的一个词。“智能合约”(smartcontract)是由多产的跨领域法律学者Nick Szabo 于1995 年提出来的,他将其定义为:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”虽然智能合约是由计算机代码写成的,并由计算机负责执行,但是智能合约更像是一个“合约”而不是一个“程序”。在理解智能合约概念时,需要站在业务角度来看待这些代码。在区块链体系中,用算法交易程序代替合同,智能合约约定的日期、条件一旦达成,网络将自动执行合约。智能合约能够利用互联网获取的外部数据以及读取区块链自身存储的内部数据,通过建立基于规则的数据和标准化智能合约,实现复杂的业务逻辑。
从技术角度看,区块链很像是一个不可更改的分布式数据库,而智能合约很像是数据库上的一个触发器。但是从业务角度看,正是由于其不可篡改和必须执行的特点,区块链技术对业务的影响要远超数据库技术:区块链已经深入到了业务的内部,而数据库对于业务而言只是一个工具。
区块链的价值在于,没有任何一个中心能够控制这个系统,数据一旦产生便不可更改,这产生了强大的信任。因此人们常说区块链是一台创造信任的机器。这便是区块链的最大魅力所在。
ICO比特币区块链分别是什么意思?
感谢邀请 ICO(是Initial Coin Offering缩写),首次币发行,源自股票市场的首次公开发行(IPO)概念,是区块链项目首次发行代币,募集比特币、以太坊等通用数字货币的行为 比特币(BitCoin)的概念最初由中本聪在2009年提出,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。区块链是技术,将对未来经济产生巨大影响,比特币是商品有一定价值,ICO是行为,值不值钱您说呢?!
如何评价区块链30时代这一说法?
现在区块链概念大火,不少人都在说区块链3.0时代已经到来。那么我们来看一下区块链3.0时代是什么。
目前区块链分为三个阶段
1.区块链1.0
亿比特币为代表的虚拟货币,虽然比特币有难以监管、甚至有一些不法应用等缺点,但它仍然给我们勾勒了一个理想的场景——全球统一货币。
2.区块链2.0
区块链技术被广泛应用在各个金融领域,比如股票、债券、银行存贷、智能合同等方面。2.0目前典型代表就是以太坊和超级账本。区块链2.0从技术角度上还具有图灵完备、支持智能合约等优势。
3.区块链3.0 就和互联网一样,区块链3.0被理解将应用到更广阔的领域,覆盖人们的日常生活。比如以区块链技术实现个人信息的自证明,摆脱第三方信任托管机构,实现信息的安全共享等。
1.0的主要技术是分布式记账法。2.0目前的典型代表是以太坊和Hyperledger。以太坊的重心是智能合约,Hyperledger的重心是打造一个超级账本。区块链3.0应用已经超越了经济领域,被应用在医疗、教育等方面。不少机构都在努力成为区块链3.0时代到来的标志性项。 就目前发展情况来看,区块链3.0时代即将到来。
如何快速学习了解区块链?
答:本文邀请thomas来回答,他会从基础数据结构展开,对构建简易区块链所涉及的几个知识点做一个简单梳理~
1、区块与交易数据结构如下图是官网给出简化区块链结构图,一个区块有区块头和交易组成,每一个区块头部主要包含前一区块hash,merkle root data,时间戳,计算器等值,可用于工作量证明。
大部分简易区块链的文章中都简化了这部分设计,实际把交易结构直接放入区块中(也可以是其他数据),而不会有区块/区块头之分。
再看交易结构,交易作为比特币的核心部分,根据官网给出示列可以看出交易在区块链中的流转过程。
首先,先归纳出交易相关数据结构:
其实理解交易的整个流转过程并不难。每一笔交易有输入输出组成,输入会引用之前交易的输出,交易的输出包含了资产实际存储值。为了方便理解,我们假设有甲乙两人(可理解为地址)发生交易,甲 向 乙 转入100k(甲有足够资金),产生交易订单:TX0;input0为引用甲之前交易的输出output(引用甲需要的资金>=100k);output0为甲剩余资金;output1为乙获得资金。
在结合官网给的结构图发现每次交易缺少10k satoshi,官网解释为对挖出区块的矿工的奖励(实际这是一种激励形式,后续有介绍)。个人理解其表现形式应该也为一项有效交易的输出。这笔交易一旦成功并加入区块,实际上这笔交易所引用的输出就要作废。因为在这里每一笔交易引用的输出在整个链路中只能出现使用一次,这是为了防止双花即同一输出多次使用的结果发生。所以这里还会还涉及几个概念, 后面继续介绍。
2、utxo集utxo(unspent transactions outputs)集,字面意思未花费交易输出。一笔交易的输入需要获取以往交易的输出来获取余额信息,当整个区块链达到一定高度时,每次交易便利整个区块链时不可取的。引入utxo集,将未被任何交易输入所引用的输出集合管理,加快交易的相关操作。在构建简易区块链实现中,较简单通过遍历整个链路过滤出符合要求的未花费集合。这里符合要求可理解为与己相关,可被自己解锁的且未被其他输入所引用的输出(上面提到的防止双花),这样以保证未花费输出被恶意消费。
3、merkle树前面提到区块中存储的merkle root data。每个区块包含一个或者多个交易记录,为了验证某笔交易难免会遍历或下载区块及交易数据。针对这中情况,比特币中采用merkle树,merkle root data被存储在区块头中, 交易数据hash后两两合并在hash(如果区块中交易数为单数,则取最后一笔交易凑足双数节点),直到归并为一个hash节点merkle root data。其过程如下图所示。
比特币中的简单支付验证(SPV)部分,是通过从Merkle根节点进行遍历,只需取得所需的交易hash和待验证交易hash就可完成验证,这样就无需下载整个交易区块数据。列入上图中,证明D交易被添加到这个区块中,一个SPV客户端只需要拷贝merkle树路径中C、AB和EEEE 哈希到Merkle根节点,而客户端不需要知道其他的交易的任何信息。
4、密钥 地址 签名在整个比特币交易过程中,比特币的所有权是通过密钥、地址以及数字签名来确立的。在交易中必须要知道交易的发送方和接收方才能完成交易。只需知道一方的地址便可以向这个地址发送货币产生交易。首先,密钥是成对出现的,由私钥和公钥所组成,在比特币中被存储在钱包文件中。公钥可对外公开,但是私钥是证明所有者身份的存在,只有所有者知道。如果丢失,那就失去了名下所有交易的所有权于控制权。
4.1 密钥
比特币实现中使用椭圆曲线算法生成密钥对,使用ECDSA对交易数据签名,算法原理暂不介绍。其代码实现如下:
4.2 地址
比特币中的地址实际上由1字节version,20字节的公钥hash以及4字节checksum组成,人们可见的地址是有实际地址经过base58编码后得到的可读地址。其中version取值为0x00。
其生成规则与代码实现如下:
base58(version+公钥hash+checksum)(位数不固定)因为base58编码格式与十六进制格式转换结果位数不确定。
4.3 签名生成
为了保证交易数据的有效,当前交易所有者需要在交易中提交其公钥和签名(每次交易的签名都不同,但均从同一个私钥生成)。比特币网络中的所有人都可以通过所提交的公钥和签名进行验证,并确认该交易是否有效,即确认支付者在该时刻对所交易的比特币拥有所有权。私钥生成签名signature(privkey + txdata).公钥验证 pubkey+txdata 是否有效。
这里有必要介绍一下P2PKH(Pay-to-Public-Key-Hash),比特币中大部分交易以p2pkh交易脚本实现,用scriptpubkey锁定脚本,script解锁。在以上实现中,直接用公钥,公钥hash,签名实现锁定与解锁的过程,简化了script脚本语言这一过程。
也正是因为这样的脚本语言,可以表达出无数的条件变种,也使得智能合约成为可能。
5、共识pow当交易完成,一切必要数据均以生成,区块生成就可以直接加入区块链中吗?在比特币中,在去中心情况下各节点需要对这个交易的有效性达成共识,才能真正加入区块链中。
比特币实现这个共识的方法主要包括两个部分:
(1)激励:通过每个区块产生一定量的新比特币来激励参与者;
(2)工作量证明(pow):矿机需要证明自己生成区块的工作有效。
这种有效激励及证明,维护了整个网络的正常运转,保证区块安全的加入到区块链中。其实现过程简单来说是对给定数据data与计数器nonce组合进行SHA256哈希运算,如果得到满足规定的哈希结果(满足规定个数的0开头的hash值),则验证通过。为了得到有效结果,我们需要不停的递增nonce计数器值进行sha256计算,直到结果有效。
在比特币实现中采用的是hashcash算法。其实算法的思路简单较易实现,各节点间只需通过验证计数器nonce即可达成共识。当然这里也暴露出一些安全问题,如果只要有足够的挖矿算力(超过整个系统算力的51%)就能对系统成功进行攻击。所以这里也衍生了其他的一些共识机制,比如权益证明pos(proof of stake)这里就不介绍了。
6、网络说道网络组成,我们都知道比特币的网络部分属于去中心化的p2p网络。每一个网络节点客户机器根据其功能有不同的划分。比如包含区块链完整数据的全节点,负责挖矿的矿工节点,客户端节点等。初始节点加入网络,通过种子节点连接到网络中其他节点,连接建立后通过getblock,getaddr,getdata等消息于其他节点交换信息,比如发现新节点,交换数据数据等等。
总结:对基本概念有所了解后,不考虑网络实现实际可以动手实现一个简易程序。网络实现部分在开源社区也有很多解决方案,有基于go-libp2p实现网络部分的区块链demo,但是相关概念不算丰富,但是却给了一个实现方式的思路,可以基于go-libp2p完善这部分的结构。
还没有评论,来说两句吧...