智能合约
智能合约:智能合约是一种计算机协议,在以太坊中最重要的应用就是设计和部署只能合约。智能合约最早在1995年由计算机学者尼克·萨博(nick szabo)提出,当时他的理念是:智能合约是一套以数字形式定义的承诺(promises),包括合约参与方在内都可以在上面执行承诺的协议。这一套理论的目标是为了能够让智能合约满足普通合约的约束条件,最小化恶意或者意外发生的可能性,同时减小对信任中介的需求,这样一来也就能降低造成合约欺诈的损失和仲裁执行的成本以及其他一系列交易成本。Nick szabo希望借助计算机和密码学的约束,改进传统合同的制定和履行,将所有合约条款和约定执行置于计算机协议的掌控之下,但是在区块链技术未出现之前,这一套理论仅仅是理论,很少有真正在实践中尝试。
传统抵押贷款和贷款抵押智能合约(来源于2016年底发布智能合约白皮书)智能合约可以通过自动连接各方来完成抵押合同的执行,从而提供流畅且不易出错的体验。智能合约可以在贷款支付时自动处理付款并从土地记录中释放。
智能合同一直未被推广,是因为缺少一个可支持变成合约的系统,区块链的出现,因为其去中心、不可篡改、信息可追踪、信息透明等特点,使得智能合约找到了一个合适自己的平台,所以现在智能合约被认为是区块链技术中重要一块。特别是目前提出的区块链2.0技术,甚至用智能合约来作为明确的界限。
区块链技术其中一个目的是为了建立一个去信任化系统,信任在互联网中是什么概念,信任就是点对点的链接,这个链接存在于数字空间中(计算机底层不就是01010101),这个空间是分布式的,没有所谓的中心化,信任关系通过算法转变成为代码,代码转换为程序,程序驱动执行每一步。互相间的信任就是事先约定协议通过计算机和算法来实现控制。智能合约的信任在区块链环境中刚好能完美实现。
智能合约的法律意义:提到合约,不可避免的会牵扯到法律条文,智能合约使用的编程语言,不是法律条文,在区块链上智能合同可以理解:code is law。合约的主体是计算机网络中每一个拥有数字身份的甲方和乙方、合约的条款就是代码上规定的双方的权利和义务(代码上的规则指定可参考法律的约束性),执行条款时,合约代码判断是否符合、是否违规、是否作废,这个判决过程完全由代码来控制。所以智能合约没有法律上的明确条文约定,一些都是制定代码时的协议,故法律上的有效性这个问题还需要等待。
智能合约执行过程:
首先说下智能合同的四个核心概念:
数字身份,在区块链环境中不像现实社会每个人有身份证,每个企业有营业执照,那么区块链中的数字身份就类似你的个人信息,有个身份才能构建合约的主体。
数字资产,这个不难理解,身份对应资产,智能合约中没有现实中心化机构来验证资产,那么你有房产要做抵押贷款,就要把这个房产作为数字资产登记到你的数字身份下并锁定。
合约仲裁平台,这个就类似于现实中的仲裁机构(法庭),虽然区块链目的是一个去中心化的系统,但是在目前以太坊中的仲裁平台,个人理解为代码执行虚拟机类似以太坊中的EVM,区块链中的合约仲裁平台作用就是发现智能合同,并在参与合约双方的平台上安装这个合约,并执行这个智能合约。
数字资产托管,智能合约用于保管数字资产。
开始执行后分为以下几步:
1.各个合约参与方共同来制定一份之前协商好的智能合约。
1.1.每个参与方需要先加入区块链,生成一个数字身份,以及一对公私钥,公钥加工后成为数字身份地址,私钥就好好保存。
1.2.有数字身份后参与合约者,互相商定好协议,明确权利和义务,当然这都是通过编程语言来实现,完成后各自用私钥签名(类似于在合同上的签字),然后分发到区块链网络中。
2.双方约定合约后发布到区块链网络中,理论上每个节点都会收到,验证节点会把合约暂时保存起来,等下一个区块生成写入区块。
3.通过区块链的共识机制,在一定时间内会有一些合约被一起打包,验证节点通过对区块链上HASH值的计算打包称为一个区块,并在网络中发布,其余节点收到区块验证HASH值,验证是一个多轮的环节,最终验证节点在规定时间内对新合约集合达成一致,形成区块(区块内有合约集合,对于每条合约都需要验证,验证通过的才能到区块中,验证主要是合约参与者的私钥和账户是否匹配)。
4.智能合约自动执行
4.1.智能合约会定时检查状态,遍历合约中的事务和触发条件,将满足的事务推送到验证队列中。
4.2.待验证的事务发布上每个验证节点,首先对签名验证,保证事务的有效性,然后验证通过的进入共识集合,等到共识后,事务执行成功后通知用户。
4.3.事务执行后,智能合约中的状态机制在判断合约状态、标记状态,如果合约执行完成则在区块中删除,如未完成等待下一轮处理。
整个智能合同的执行是自动完成,不可篡改,完全透明化。
(参考:区块链:从数字货币到信用社会)
智能合约其中一种模型结构,其实智能合同的模型可以有自己随着应用场景的不同来稍作修改,但基本成熟结构还是遵循各白皮书和目前比较流行的几个区块链技术中的架构模型。
智能合约白皮书中提到了12个应用场景:数字身份、记录、证券、贸易金融、衍生产品、财务数据记录、抵押、土地所有权记录、供应链、汽车保险、临床试验、癌症研究(促进癌症数据共享、促进患者同意管理过程和汇总数据贡献和数据共享,同时保护患者的隐私,这可能需要新形式的区块链技术来提供实时访问和数据保密性,期待这一块和临床试验一期实现)
写到这里,有些疑问,既然智能合同一切都是建立在非信任状态下,那为什么还要反复去验证,这里借用一位总统的话:Trust,but verify。