第一章:初区块链识
区块链本质就是一种记账方式。举例来说,张三、赵四、王五、李六等人,相当于一个区块链的客户端,他们运行在不同设备上,彼此之间相互独立,我们通常称之为节点。节点运行之后,他们彼此会先认识一下。形成可以相互通信的“网络路由”。网络路由要保证一个重要的功能就是数据同步,实时更新数据的方法就是不断询问临近节点,节点彼此都充当服务者和被服务者,通过这种方式,网络中的每一个节点都会在某一时刻达成数据上的一致。
在这个网络中,每个节点都有一个独立账本,账本中记录着网络中发生的财务账单。要记账时会根据规则选出一个记账节点,这个节点的选择类似于掷骰子,选择方法称之为“共识算法”。选出节点之后,则一段时间内数据记录会以这个节点的内容为准。这个节点记录好之后会把数据广播出去,其他节点通过网络接收数据,看记录的内容和自己的账本匹配不匹配,如果匹配就把数据存到自己的账本里。
在系统中,考虑到记账节点的劳动付出,于是设立一种奖励机制。有时候,大家会很希望获得这个奖励,所以希望骰子可以投中自己。有些区块链系统在这个环节会设计出一种带有竞争的机制,让各个节点去抢,谁能抢到这个机会谁就能获得打包数据的权利并且同时获得这笔奖励,这种情况下,我们形象的称这种竞争为“挖矿”。
那么,我们如何标记节点的使用者呢?这点他们不是采用用户名注册的方式,而是采用密码学的方法。
用公钥加密的数据必须用对应的私钥来解密,而私钥加密(通常称之为“签名”)的数据必须通过对应的公钥来解密。如张三要想给李四一个支票信息,为防止第三者拿到之后信息泄露。于是就在支票上用李四的公钥加了一个密,然后再签上自己的名字(用自己的私钥),这种设计机制在区块链中称为“脚本系统”
区块链之所以称为区块链是在于他将产生的数据按照一定的时间间隔,分成一个个的数据块记录,然后再根据数据块的先后顺序串联起来,就形成了所谓的区块链了。按照这个规则,沿着时间线逐渐增加的新的区块,就好像时间记录仪,记录下发生的每一笔操作。
多个计算机在不同设备上运行所组成的网络,在网络中每个节点都是平等的,大家互相为对方提供服务,这种网络称之为点对点的“对等网络”。
“共识算法”是什么样子呢?
在平等的网络,让大家各抒己见再投票表决显然效率太低。现在的做法是提供一套筛选机制。设立一组条件,让大家都去完成,谁能更好的完成指标,谁就有机会被选上。在区块链中比如PoW(Proof of Work 工作量证明)Pos(Proof of Stack 委托权以证明)等都是这样的筛选算法。
区块链实际上就是一个维护公共数据的账本系统,一切技术单元设计都是为了更好的维护这个公共数据账本。通过共识算法达成节点的账本数据一致;通过密码算法确保账本的不可篡改性以及数据发送的安全性;通过脚本系统扩展账本系统的表达范畴。区块链甚至可以理解成一个特别设计的数据库系统或是分布式数据库系统,这个数据库可以存储数字货币,也可以存储逻辑更复杂的智能合约,以及范围更广泛的各种业务数据。
挖矿计算
打包就像记账,是把发生的交易事务信息记录下来存档,但是,无论什么时候打包,谁来打包,在网络中发生的交易是持续不断的,就像企业进货记录,无论记账员是一个月还是半个月记一次账,业务是持续进行的。在比特币系统中,每个人都会通过钱包进行的转账交易数据存储到网上,这些都是等待打包的未确认数据。这些数据会存放在一个内存池中。
挖矿程序从内存池中获取用于打包的区块数据,接下来进行挖矿计算。挖矿就是重复计算区块头的哈希值,不断修改该参数,直到与难度目标值匹配的过程。
一旦匹配成功,就可以广播一个新的区块,其他客户端会验证你的区块是否合法,如果验证通过,就写入到个人的区块链账本数据中。
另外一个需要注意的是,挖矿算法并不能保证只是一个矿工能挖到,如果同一时间内多个矿工都计算出了符合条件的值,都有了打包权,那么到时候谁能够获得真正的打包,只能看运气了。
可编程合约
在比特币系统中,并不是像银行账户一样,将金额存储在某个账户下就表示一笔资产是某个账户拥有的,而是使用一种脚本程序,通过脚本程序解锁脚本和锁定脚本一笔资产,简单的说,就是让资产具备更强的编程可控能力,拥有秘钥的用户可以提交自己的签名信息让脚本来验证身份,以证明自己对资产的所有权,并且可以通过程序设定对资产的管理方式,比如设定一笔资产需要多个共同签名才能被转移或者需要达到某个条件时才能被使用等。这种可配置、可控制的思想就是可编程合约的思想。
以太坊扩展了这种思想,使得可编程合约进一步发扬光大,不但支持加密数字货币,还支持更复杂的金融与商业合约编程,比如众筹、担保等。这种合约使用脚本语言进行开发,部署到区块链中就不可篡改,也就是所谓的代码即法律。区块链系统具有数据不可篡改性、价值传递能力,加上可编程合约,就能完全支持商业环境下各种合约需求,无论合约中有哪些条条框框,写在纸上不如写在代码中,部署在区块链中,公众透明且刚性执行。
第二章:区块链应用发展
2.7 区块链基础设施:可编程社会
区块链应用有一个非常独特的特性就是其价值网络(共识)协议,如何在网络节点之间形成(价值)共识是区块链最核心的逻辑,这个逻辑往往都是一个可编程的协议层提供的。未来的可编程社会,我们可以预见:信息的流转是绑定资产流转的,资产流转往往是通过可编程的自动化完成的。
后记:区块链与可编程社会
还可以记录医疗健康信息,再也不用担心找不到本子了,而且医疗机构之间可以共享病例信息,提高对病人的诊断能力,凡此等等,社会的方方面面都会被覆盖到。
随着人们对区块链技术的认识加深,大家终将意识到,与其说这是一类技术,不如说这是一类思想。它代表了一种价值观,公正透明、信任协作的价值观,我们将沿着历史发展的路线,从最初的黄金屋(加密数字货币)走到智能合约,再走向更有前景的可编程社会。
网友评论