智能合约是一段写在区块链上的代码,也是传统合约的数字化版本,而基于区块链的智能合约,会编写一个图灵完备完全无须第三方信任的代码让用户来构建智能合约。智能合约的运行总共要分三步构建 → 存储 → 执行。
1)智能合约由区块链内的多个用户共同参与制定,可用于用户之间的任何交易行为。协议中明确了双方的权利和义务,开发人员将这些权利和义务以电子化的方式进行编程,代码中包含会触发合约自动执行的条件。比方说,你把一套闲置的房子租给A,那么,这份智能租约中就规定了A必须在每月5号之前给你打房租、你必须在收到房租时马上给对方钥匙[2]等条款。
2)一旦编码完成,这份智能合约就被上传到区块链网络上,即全网验证节点都会接收到你和A的租房合约。
3)智能合约会定期检查是否存在相关事件和触发条件;满足条件的事件将会推送到待验证的队列中。假设A在4号提前打房租给你,这个事件就成了该合约的触发条件(每月5号以前)。
4)区块链上的验证节点先对该事件进行签名验证[3],以确保其有效性;等大多数验证节点对该事件达成共识后,智能合约将成功执行,并通知用户。
5)成功执行的合约将移出区块。而未执行的合约则继续等待下一轮处理,直至成功执行。
部署到以太坊上的智能合约是要消耗以太币的。就好像把现实中的仲裁人、法官、执行人搬到了区块链上,尽管他们成了一行行的代码,但也是珍贵的计算机资源。智能合约也遵循“Less is more”,逻辑应尽可能地简单。逻辑越复杂,消耗的以太币就越多。
既然执行要消费以太币,如何支付呢?这跟淘宝的直通车类似,商家提前存几千块进去,系统会自动执行(匹配推广),费用一旦用完,推广立即停下。智能合约也是预支付,为了合约顺利执行,宁愿提前多打一点以太币,都不要少给了。智能合约比淘宝推广还狠,如果预支付的以太币不足以支撑整个执行过程,就算进行到半路,合约也会回到初始状态;更郁闷的是,消耗的以太币也不会退回给合约发起人。
网友评论