导读
【资料图】
做区块链的人经常听到智能合约,做开发的人经常听到链码,这两个概念是什么含义,是怎么来的,要解决什么问题,有哪些区别。
接下来让我们一起走进今天的文章吧!
1
引入
1、一个思考
这个世界,并不是一个友善的世界,如何保证我们的权益不受损害,是每个人,都很重视的问题。
最理想的情况,是人人都很善良,都很正直,都不会做伤害别人的事情。这也是很多人在追求的理想世界,中国称之为大同,外国称之为乌托邦。
然而这是不现实的,为此,传统的做法,是设计一个可信第三方。所谓的可信第三方,就是完全诚实,绝对可信的,他们不会做任何有偏向的,完全公平公正的决策。并且,他们会完全按照约定进行决策。而其他所有的人都会按照约定规范自己的行为;如果违反约定,就会受到相应的惩罚。
然而上述方法也存在问题:
1、所谓的可信第三方真的可信吗?
2、可信第三方的约定是谁做的,约定公平吗?
3、即使约定公平,对应的惩罚是合理的吗?
4、即使惩罚是合理的,能保证一定会受到惩罚吗?
5、即使受到惩罚,另一方的权益真的保证了吗?
上述这些问题,是一直在探索,但是一直没有很好解决的问题。
智能合约很好地解决了一部分问题,特别是在区块链的加持下。区块链上的智能合约对于所有想要调用的人来说是公开透明的,也就是说,约定是每个人都能看到的,每个人都能评判的,而不仅仅是少数人的决策,多数人的被迫接受。
另一方面,智能合约是机器代码,除了上述的公开透明,还有不可篡改和强制执行的特点。这样,因为不可篡改和强制执行,就在很大程度上抹去了人的主观影响。
然而,技术也仅仅能保证这些。更重要的是人性,更重要的是社会的不公和压迫。特别是在资本主义越来越猖獗的时代,这样的不公和压迫越来越多,也越来越隐蔽。马克思主义所追寻的共产主义道路,才是解决这一切问题的根源。当然,剥削阶级会否认这些问题,不然,他们就没有办法通过剥削压迫被剥削阶级而获得大量的剩余价值了。
我无意评价任何人,但是资本主义会将所有人变成行尸走肉,即使是剥削者,他们也是资本主义剥削下的行尸走肉,他们的一切,都只是为了资本增殖,他们也成为了资本的行尸走肉,与无产者又有什么本质不同,无非生活物质条件好点罢了。他们的一切奋斗的目的,最后都会将自己送入坟墓,就像封建社会,一定会将自己葬送一般!
只有共产主义,才是永恒!因为共产主义没有剥削,没有压迫,人人团结奋斗,人人相亲相爱。可能共产主义初期物质条件稍稍差些,但是不要担心,他们的发展一定是迅猛的,一定是摧枯拉朽的,一定会把所有的那些错误的,不好的送入坟墓。不然,资本主义、修正主义们,也不会如此疯狂污蔑了。在他们的眼中,阶级斗争,依然严峻,可他们却绝不承认阶级斗争的,他们的目的是让所有的被剥削者们,放下自卫的武器,乖乖受他们的剥削罢了!他们的目的是延缓自己毁灭的时间,好让自己能够多苟延残喘一阵罢了!
2、发展历史
智能合约主要有三个阶段。
第一个阶段是提出的阶段。一般来说,我们都认为智能合约是跨领域法律学者、密码学家尼克·萨博(Nick Szabo) 于1 995年 提出来的。他在发表在自己的网站的几篇文章中提到了智能合约的理念。他的定义如下:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”。
但是第一阶段只是理论阶段,并没有真正实现,直到区块链的出现,使得智能合约的实现成为可能。
第二个阶段是实现的阶段,一般来说,我们都认为,以太坊是真正意义上的第一次实现了智能合约,他超越了比特币仅能作为交易货币的功能,可以将更多的与权益相关的内容以智能合约的形式——即强制公开执行无法篡改的代码进行部署与保障。
第三个阶段,是妥协的阶段,妥协是因为公有链的一些实现问题。例如比特币为了保证公平,设计了PoW共识机制,虽然尽量公平了,但是高耗能的问题是极其严重的。但是也不是绝对的公平,因为掌握更多生产资料的人,他们总可以搞到更多的节点,更容易挖矿,更容易成为链的生产者。例如以太坊,设计了PoS和DPoS,虽然更高效了,但是公平性基本上被抹杀了。权力最终会越来越集中。为此,更多的共识机制出现了,联盟链也出现了。联盟链本质上已经不属于区块链了,他们已经违背了区块链的本质和初心。但是他们依然宣称自己是区块链。就像修正主义者标榜自己是科学的马克思主义一样。联盟链中有链码,本质上就是智能合约,但是这个智能合约仅仅是组织和组织之间,而组织不是一般人可以涉足的。我们能保证的是,将联盟链的思想,应用给一般人。当权者和普通人,不再是同一条链,也就是说,当权者不再和普通人遵循一样的规则。当权者可以凌驾于规则之上,普通人只是待宰的羔羊!
纵然有万般问题,但是理想之路也是一定要走下去的,循环往复,向左向右。前进的道路是崎岖的,但是目标是光明的,理想的区块链一定会实现,共产主义也一定会实现!
2
智能合约
1、定义
智能合约(Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约可以实现不依赖可信第三方的可信交易,区块链的理念保证了这些交易可追踪且不可篡改 。
2、特点
智能合约其实和智能没有太大关系,所谓的智能,我们可以理解为自治的,他并没有实现人工智能意义上的智能,实现的仅仅是传统系统的自主执行。
智能合约有如下特点(更本质的是区块链所追求的特点):
规范性 。智能合约以计算机代码为基础,能够最大限度减少语言的模糊性,通过严密的逻辑结构来呈现。内容及其执行过程对所有节点均是透明可见的,后者能够通过用户界面去观察、记录、验证合约状态。
自治性 。一旦触发执行条件,合约便自动执行预期计划,不会受到人的主观影响。
防篡改性 。智能合约上的内容是不可篡改的,一方面是基于区块链本身的分布式存储保证了不可篡改的性质,另一方面,在不同的编程语言中,设计了不同的语句,保证了不可篡改,如Solidity中的状态变量。
可追溯性 。区块链上的交易信息公开透明,每个节点都可以追溯记录在区块链上的交易过程,违约行为发生的几率极低。
匿名性 。根据非对称加密的密码学原理,零知识证明、环签名、盲签名等技术,在区块链上,虽然交易过程是公开的,但交易双方却是匿名的。
3、存在的问题
由于合约本身存在的问题,和区块链当前存在的问题,智能合约还是存在很多问题的:
1、不可篡改导致的问题
由于不可篡改,可能会导致出现很多问题:
一方面,如果合约本身有问题,那么因为其强制执行导致的不可篡改的后果是极其严重的。可能错误都无法改正。一般的采取办法都是直接将该合约舍弃,但是已经造成的不好的影响弥补起来异常困难;
另一方面,如果合约被舍弃,或者合约到期,因为不可篡改,该合约会永久停留在链上,也就是链上的“垃圾”会越来越多,还没有办法清理,会极大地浪费空间,总有一天会满是“垃圾”,存不下真正有价值的东西。目前采取的办法是“相信后人的智慧”。
2、可追溯与匿名性导致的问题
信息公开透明会有一定的安全风险,匿名性又有一定的安全隐患。如何保证既能追溯,又能保证匿名;即:既能保证个人或者组织不会作恶,又能保证个人或者组织的隐私问题,是亟待解决的!
3、其他安全问题
还有很多安全问题,如合约发生故障,如合约本身的不合理性,如节点脆弱导致的攻击问题,如隐私泄露的问题等等。
3
链码
在联盟链中,智能合约被打包到链码中,什么是链码呢?链码和智能合约有什么区别呢?
1、什么是链码
链码(Chaincode ) 是用编程语言实现的程序,包含多个可执行的智能合约 。 在联盟链中, 节点 通过共识机制验证 、 排序并将交易 进行广播。 这个 操作 我们通过业务逻辑代码,也就是智能合约进行实现。 这个业务逻辑代码, 也就是链上的代码,我们称之为链码。
2、链码与智能合约
如果简单来看,链码基本上可以等价于智能合约,但实际上他们还是有一定的区别的。智能合约一般强调业务本身的数据以及业务之间必须遵守的关系。这是区块链正确运行的核心逻辑。而链码强调的是如何保证智能合约的正确执行,也就是说,链码要考虑智能合约的打包、部署。
举个简单的例子,算法工程师和一般的开发工程师,算法工程师考虑的是算法的逻辑实现,算法中应用的数据结构。而开发工程师不用太考虑算法的细节,他们要做的是了解算法的功能,然后成功部署算法到环境中。