【LawTech Sharing】如何在法律圈里装着懂点区块链

2018-01-25


近日笔者参加了一场法学大咖云集的盛会,会议主要是对当下最热、最新的技术或应用引起的种种法律问题进行探讨,发表各自观点,期间各路观点有的争锋相对,有的相互补充完善,更有来自底层设计的创新和对未来折现式的思考,笔者整体上感觉非常过瘾,但是在谈到“区块链”时,笔者作为一个曾经的西二旗码农觉得有必要做些解释,也许有人会说码农的观点就是所谓的“代码即法律”、没参加过司法考试的码农有什么资格谈法律,笔者认为这是一个很大的偏见,当下新技术的新问题哪一个能绕过代码,研讨新技术、新应用引发的法律问题如果不做些代码级别的实事求是的研究,可能还真弄不懂,也就糊弄也不太懂的人罢了,研讨讨论也不一定会有超过吃饭喝酒的作用。当然,笔者肯定是参加过并通过司法考试和专利代理人考试的top2大学毕业的法律从业人员。


一、区块链该怎么定义?


维基百科上对区块链有个定义,大概内容是A blockchain --originally, block chain--is adistributed database that maintains a continuously-growing list of data recordshardened against tampering and revision. It consists of data structureblocks,which hold exclusively data in initial blockchain implementations, andboth data and programs in some of the more recent implementations-which eachblock holding batches of individual transactions and the results of anyblockchian executables. Each block contains a timestamp and information linkingit to a previous block.这个定义作为入门级的解释来说确实是不太好理解,而且这个定义重在说明区块链具备哪些功能或者特点,笔者也看过很多介绍区块链的书,基本也都是这么来解释的,想想可能大多是直接对维基百科上的英文进行了翻译,看完了也还是弄不太清楚区块链到底是什么。这里我们就说说区块链到底是什么?


首先维基百科的定义至少告诉我们区块链的英文名称为“Block chain”,区块链的中文意思是“区块”“链”,而不是“区”“块”“链”。“Block”在计算机技术领域中是一个非常常见的概念,在编程语言中它指一个代码块,这个代码块通常写在花括号{}中;在数据库设计方面,Block指一个数据存储单元,所谓单元就像生物学中的细胞一样,是整个数据库中最小的完备单元。Chain也是一个计算机原理中常见的概念,数据链路、链路层,根本上是指数据传输、交互的协议或方式。简单点来说,区块链就是一种数据库,这种数据库内部的数据单元(Block)之间遵循一定的链接(Chain)协议,这种协议使得这个数据库具备一些了特点,而这些特点在维基百科定义中列举了一些:

1distributed database——分布式数据库

2a continuously-growing list of data records——连续不断增长的数据记录

3hardened against tampering and revision——防篡改和修改

4a timestamp and information linking it to a previous block——时间戳和连接前一个区块的信息数据


二、区块链niubility的特点


(一)分布式数据库(distributed database

分布式数据库的原理就是利用分散在网络各处的数据存储能力,通过调配实现海量数据的存储,配套的还有分布式计算、分布式系统等,区块链数据库要记录continuously-growing list of datarecords,以及具备hardened against tampering and revision特点,都要求这类数据库必然是分布式设计的。


(二)连续不断增长的数据记录(continuously-growing list of datarecords

这主要是说一个区块链数据库可以不断拓展,任何人都可以架设服务器接入区块链数据库,构成区块链数据库网络,成为一个结点,每个结点都是整个数据库,都可以不断记录数据。这项特点得益于近十多年分布式技术和计算机硬件技术的发展,在数据存储、计算能力方面,之前我们就像在一个小水池里游泳,稍微用点力气游就可能撞到墙壁,现在我们可以到大海里去游泳了,妈妈再也不用担心我们撞墙壁了,该担心倒是游泳的路线、规则等问题。


(三)防篡改和修改(hardened against tampering andrevision

防篡改和修改,是指防止被动的被篡改和防止主动的去修改两个意思。区块链数据库实现这个特点依靠的是它所谓的去中心化的数据库设计。那么什么是中心化,什么是去中心化,笔者举个简单的例子:

铁蛋小的时候学习一直不好,从来没考过100分,有一次走了狗屎运一下考了100分,铁蛋高兴极了,兴冲冲的拿着考试卷回去给老爸邀功,可是老爸一想,不对啊,平常都是60分现在怎么突然考了100分,有点怀疑,不相信铁蛋一下进步这么快,怎么办呢?铁蛋只好说:“如果不信的话你就去问张老师啦”。然后,爸爸就出去上班了,过了一会妈妈回来了,铁蛋又说“我考了100分”,要妈妈给奖励个游戏机,妈妈也很吃惊同样不相信,怀疑铁蛋是否作弊了,这样铁蛋只好又说:“不信你去问张老师!”同样,姐姐也回来了也是不相信,铁蛋也只能说“不信你去问张老师!”。因此可见,因为铁蛋平常表现不佳,失去了威信,在整个环节中,只有张老师才能确认铁蛋确实考了100分,铁蛋需要张老师来给自己背书,增强铁蛋信誉,张老师就是这个事件的中心。


后来,铁蛋的爸爸下班后和张老师核实了铁蛋确实考了100分,也非常高兴,答应带铁蛋回老家看望爷爷奶奶等亲戚,回到老家后爸爸逢人便说铁蛋考了100分,学习变好了。这样老家的七大姑、八大姨都知道铁蛋“考了100分,学习变好了”。这样铁蛋在老家备受宠幸,可高兴了,有一天铁蛋去一个女同学小淋家里玩,小淋的妈妈认识铁蛋家很多亲戚,一直知道铁蛋学习不好,不想让小淋和铁蛋玩,这些铁蛋都知道,所以一去他们家,铁蛋就说“我考100分,学习变好了,您不信可以去问我大、二、三姨,四、五、六叔叔”,这里铁蛋就充分利用的去中心化的思维方式,同样增强了铁蛋的信誉,达到了继续和女同学玩的目的。


大概知道点去中心化的意思后,我们费点劲研究一下区块链数据库是怎么通过去中心化的方式实现数据的防篡改、防修改以实现数据信任和安全的。


首先,区块链数据库有timestamp and information linking it to aprevious block的设计,即要求每个区块存储的数据除了存储内容数据外,还必须存储时间戳和前一个区块的信息数据。“时间戳”很好理解,就是一段时间记录,比如公元前221年秦灭六国,统一中国;而“前一个区块的信息”就比较难搞,简单来说可以理解为对前一个区块存储的数据经过计算后,提取出的唯一的一一对应的一段信息数据,一般来说是hash值(太难仅用来装)。那么,一旦当某一个区块发生篡改或者其他修改变化后,也就意味针对该区块计算提取出的“信息数据”(hash值)就变了,那么下一个区块所存储的数据也就要变,需要重新计算提取信息数据(hash值),然后下下一个区块,然后的然后,整个链条就变成一个联动机制。此时,如果该区块链又被作为一个分布式海量数据存储的数据库来应用的时候,这种篡改、修改就会使得计算机不得不返回“大哥,干不了啊”的状态,但是参见区块链数据库continuously-growing list of datarecords特点,区块链数据库就是海量存储用的,所以区块链自身的这种设计,保证了数据一旦写入就很难被篡改和修改,就像我们人类的历史一样,发生了就是发生了。针对上面对区块链数据库防篡改和修改设计的解释可能还不太好理解,笔者还是接着上面的故事,再举个例子:

上面的故事还没完,铁蛋后来才意识到爸爸之所以要到处宣传铁蛋学习变好了,是有深层目的的,姜还是老的辣,自从家里亲戚、女同学的妈妈们都认为铁蛋学习变好了后,铁蛋就很有压力,因为铁蛋也知道狗屎运不会总有,铁蛋为了保住“学习变好”的荣誉以及女同学妈妈们的认可,只能发奋图强,竟然学习越来越好了,“学习好”就成了铁蛋一个标签,铁蛋也竟然被老师指定为班长,手下除了有漂亮的文艺委员,还有一帮小跟班,慢慢的铁蛋变得越来越骄傲,有一天,铁蛋有点变态的突发奇想,给手下的5个小组长每人发了一个表格,要求5个小组长分别统计各自小组成员的期末考试成绩,表格是这样设计的:


表一:

记录时间:

Info:初始值A

成员成绩

AA

BB

CC

总分:


表二:

 

记录时间:

Info:前一组info+前一组总分(假定所有成绩篡改都是增加而不是减少)

成员成绩:

AA

BB

CC

总分:


然后呢,铁蛋将表一打印出来亲手交给文艺委员小组长,告诉她把本小组成员的成绩统计一下,算好总分填到表一里面;等文艺委员填好表后,铁蛋将表二复印了四份发给四个小组长,告诉他们去统计各小组成员的成绩,算出总分,填好表,谁统计的快谁的表格就可以和文艺委员的表格黏在一起。大概过了几天时间,各小组陆陆续续完成了统计工作,根据大家完成的顺序,每个小组记录了填表时间和表格的info信息,具体结果如下:


第一组

第一组

记录时间:2018.1.1

Info:初始值A

成员成绩

Xx1  88

Yy1  99

Zz1  66

总分:253


第二组:

第二组

记录时间:2018.1.2

Info:前一组info+前一组总分(假定所有成绩篡改都是减少而不是增加)

A+253

成员成绩

Xx2  85

Yy2  100

Zz2  78

总分:263


第三组

第三组

记录时间:2018.1.3

Info:前一组info+前一组总分

A+253+263

成员成绩

Xx3  86

Yy3  95

Zz3  66

总分247


第四组

第四组

记录时间:2018.1.14

Info:前一组info+前一组总分

A+253+263+247

成员成绩

Xx4  100

Yy4  100

Zz4  100

总分:300


第五组

第五组

记录时间:2018.1.5

Info:前一组info+前一组总分

A+253+263+247+300

成员成绩

Xx5  99

Yy5  99

Zz5  99

总分:297



这时肯定有人要说,不就是一个统计信息吗,为什么要设置info项,其实在让大家统计的时候,小组长们就问过这个问题,铁蛋摸摸下巴笑着解释到,这些统计表都会贴在教室后面的黑板报上,下学期选谁当小组长,可全靠这些成绩来说话,万一你们哪个小组的竞争对手偷偷改低了你们成绩,到时可就要依靠这些info信息来发现问题了,当然这些info信息铁蛋会遮盖掉,等下学期评选的时候再撕开校对,看看是否有人的成绩被偷偷被改低


再后来,铁蛋所在班级的这种统计方式被年级长老师认为很有创新,要求整个年级都按照这个模式来统计,因此,其他几个班的班长都来找铁蛋,求带,铁蛋当然是非常open,具有十分的国际主义精神,就说,那既然要做一个全年级的数据表,铁蛋所在的1班就作为一个结点,其他班班长都要把1班的数据表完全复制回去,然后再按照铁蛋设计的统计方式,在被复制回去的数据表基础上添加每个班各个小组的统计数据,这样每一个班就都是一个结点了,哪一个班完成了一个小组数据的添加就要赶紧通知其他班的联络人,然后各个班手中的基础数据表都要同步添加这个新的小组数据,之后任何班级再添加新的小组数据时都要添加在这个刚刚同步更新的小组数据之后,如此类推,最终铁蛋整个年级就形成了一个整个年级级别的区块链数据库。


故事差不多就讲完了,对于区块链到底是什么,大概情况其实好理解,深入的研究还差很多,剩下的就靠我们一起去悟了,此外笔者再简单提几点常见的有关区块链问题,作为下一回的引子:

1、区块链和区块链技术:区块链是数据库,区块链技术是构造和使用这类数据库的方法。


2、区块链和比特币:区块链和比特币是不同的事情,区块链是数据库,比特币是建立在区块链数据库上的应用,大家容易搞混主要是因为先有比特币然后才据此归纳的区块链技术,比特币应用的特点,不代表区块链的特点,有关比特币的内容笔者下次再装。


3、区块链和法律有什么关系,且不说基于区块链技术的应用项目所带来的法律问题,仅就区块链技术来说,至少在诸如电子签章、数字认证、数字作品登记、监测取证等司法和执法领域可能是一个根本性的解决方案。


微信图片_20180404192412.png

分享