最近在小组技术分享会上分享了区块链技术及应用,这里也记录整理下,我所理解的区块链技术。
区块链,就是一种分布式账本,收录所有历史交易的总账,是由区块组成的一种链式结构
简单点说,区块链就相当于一个账本,区块就是账本的每一页。
这里用比特币的例子说明一下。
创始人中本聪为了消除交易中间人(各种金融机构,辅助代理)对普通用户的剥削而发明的一种安全,隐秘,去中心化的虚拟货币。
- 安全隐秘:用户每次交易使用数字签名,且每一次可以不相同(不能从交易记录对应到实际交易的人)。
- 去中心化:不受个人或任何机构的影响,一旦生成无法修改。
最大的创新之处,基于区块的比特币发行机制,也就是区块记账人激励机制。为了保证所有交易记录的正确性,需要区块记账人(矿工)将新的交易加入到区块链中,作为奖励,每成功加入一个区块,矿工就会得到相应的比特币奖励。
节点
节点即矿工,由路由、区块链数据库、挖矿、钱包服务等功能的集合。
区块的生成
区块的生成即矿工怎么进行挖矿的
第一步
第二步
验证生成的随机数是否符合比特币预设的条件,前10位全部为0,不成功丢弃重复第一步。
第三步
成功即向全部网络广播,验证成功之后加入区块链中。
每个区块包含的内容:
- 上一个节点的id(生成的256位哈希值)
- 当前块的id
- 时间戳
- 交易记录
区块链分叉
区块链是链式结构,只有一条路径,在一些特别的情况下会产生分叉,即区块链分叉。
同一时间,AB两个节点同时产生新的区块并验证通过,在广播过程中,由于网络传输延迟,一部分节点先接收到了A区块的广播并以A为父节点延伸区块链,另一部分节点则先接收到的是B区块的广播,以B为父节点延伸,产生了分叉
新的区块C以A为父节点衍生大于B,则B分支被丢弃
保证交易的安全合法
身份数字签名机制
1、每一个用户使用一个交易代号,进行交易时验证双方签名是否一致
2、新的区块加入区块链时会验证每笔交易付款方余额是否充足,不承认不合法的交易
只有一种可能的攻击方式,即利用区块链分叉,在收款人确认交易之后,从记录交易的上一个节点建立分支并超过之前的长度。
eg:Tom给Jerry付10个币购买黄金,交易记录记录在了A区块中,A区块已经通过验证并广播加入到区块链中,Jerry看到交易已经被记录,就确认交易把黄金付给了Tom,Tom拿到黄金之后,以A区块的父节点用新区块B做分叉并延长超过A区块所在的分叉,A交易所在的分叉被丢弃,币交易就无效
防止分叉攻击的方法就是等待交易被记录的区块延长6个区块之后再确认交易,理论上就能保证不能被新的分叉超越
区块链技术的应用
- 银行业
作为一种数字化,安全防干扰的帐户,区块链实现了银行业的核心功能:即价值的安全储存和转移中心。也就是说,在将来的几年内,一波基于区块链技术的公司或将影响到银行业。 - 支付和转账
区块链技术能够避开繁杂的系统,在付款人和收款人之间创造更直接的付款流程,不管是境内转账还是跨境转账,这种方式都有着低价、迅速的特点,而且无需中间手续费。 - 网络安全
虽然区块链的系统是公开的,但其核验、发送等数据交流过程却采用了先进的加密技术。这种技术不仅确保了数据的正确来源,也确保了数据在中间过程不被人拦截。如果区块链技术的应用更为广泛,那么其遭受黑客袭击的概率也可能会下降,因此人们认为区块链系统要比传统系统更为稳妥。区块链系统之所以能降低传统网络安全风险,一大原因就是它解除了对中间人的需求。 - 选举
大家的投票“绝不可能被我们——即程序员,学校管理员或学生修改、删除。” - 智能合同
智能合同实际上是在另一个物体的行动上发挥功能的电脑程序。和普通电脑程序一样,智能合同也是一种“如果-然后”功能,但区块链技术实现了这些“合同”的自动填写,无需人工介入。这种合同最终可能会取代法律行业的核心业务,即在商业和民事领域起草和管理合同的业务。 - 股票交易
许多年来,各个公司都在想方设法简化股票的购买、销售和交易过程,新兴的区块链技术创企认为他们能够超越以往,实现整个流程的自动化,提高安全性和效率。
Q&A
Q:交易之后有风险,那是不是要等很久才能确认交易?
A:理论上只要记录交易的区块延长6个区块就可以确认交易,挖矿过程中使用的生成256位哈希值的算法,其中有以当前所有节点计算能力为调节值的参数“难度值系数”,可以调节生成新区块的速度大概10分钟一个,也就是说大概一个小时就可以确认交易。
Q:比特币有什么价值?为什么能炒到这么高的价钱?
A:这个问题,我觉得同事说的很好,在金融市场上,任何一个东西,只要大多数承认就是有价值的,不管是黄金还是石头,甚至于只是一串数字代码,区块链也是基于此,大多数承认的交易就是合法的,少数的分支交易不被认同,只要大家都承认,都买,这个东西在金融市场就是有价值的。
Q:交易是怎么记录到区块链中的?
A:没有被当前区块链记录的每笔新交易都会被每个节点收录,并记录到自己节点一个交易记录临时池中,待当前节点生成新区块验证成功,就会将临时交易池中的交易记录放入新产生的区块中,验证时会验证新区块中的交易记录是否都是合法的,验证通过即加入到区块链中。