以太坊智能合同发生错误
1. 以太坊的智能合约
智能合约是运行在计算机里面的,用于保证让参与方执行承诺的代码,般情况下,普通合约上记录了甲方与乙方各方面的关系条款,并通常是通过法律强制执行或保护的,而“智能合约”则是用密码或密钥来执行关系。以更加直接的角度来理解的话,即“智能合约”的程序内容将同-开始大家一起设定好的那样百分百执行,并且零差错。
举个例子,以太坊用户可以使用智能合约在特定日期向朋友发送10个以太币。在这种情况下,用户可以操作创建一个合约,然后将程序推人该合约中进行特殊计算,以便它能够执行所需的命令。而以太坊就是专门把精力集中在这件事上的这么一个平台。
比特币是第一个支持“智能契约”的资源币种,因为网络的价值在于把价值或数据从一个点或人转移到另一个点或人身上。节点网络只在满足某些条件时才会进行验证,但是,比特币仅限于货币用例。相反,以大坊取代了比特币那种带有不小限制性的编程语言,取而代之的是一种允许开发人员编写自己程序的语言。以太坊允许开发人员编写他们自己的“智能契约”,即“自主代理”或“自治代理”,正如ETH白皮书所称的那样。该编程语言是“图灵完备”语言,这意味着它支持一组更广泛的计算指令。智能合约能做些什么呢?
1.“多签名”账户功能,只有在一定比例的人同意时才能使用资金。这个功能经常用在与众筹或募捐类似的活动中。
2.管理用户之间所签订的协议。例如,一方从另一方购买保险服务3.为其他合同提供实用程序。
4.存储有关应用程序的信息,如“域注册信息”或“会员信息记录”。概念有时候比较晦涩,我们举一个募捐的智能合约的例子来帮助理解:假设我们想向全网用户发起募捐,那就可以先定义一个智能账户,它有三个状态:当前募捐总量,捐款目标和被捐赠人的地址,然后给它定义两个函数:接收募捐函数和捐款函数。
接收募捐函数每次收到发过来的转账请求,先核对下发送者是否有足够多的钱(EVM会提供发送请求者的地址,程序可以通过地址获取到该人当前的区块链财务状况),然后每次募捐丽数调用时,都会比较下当前募捐总量跟捐款目标的比较,如果超过目标,就把当前收到的捐款全部发送到指定的被捐款人地址,否则的话,就只更新当前募捐总量状态值。
捐款函数将所有捐款发送到保存的被捐赠人地址,并且将当前捐款总量清零。每一个想要募捐的人,用自己的ETH地址向该智能账户发起一笔转账,并且指明了要调用接受其募捐函数。于是我们就有一个募捐智能合约了,人们可以往里面捐款,达到限额后钱会自动发送到指定账户,全世界的矿工都在为这个合约进行计算和担保,不再需要人去盯着看有没有被挪用,这就是智能合约的魅力所在。
2. 以太坊如何处理用户误操作的问题
以太坊如何处理用户误操作的问题?
以太坊是一种基于区块链技术的智能合约平台,可以让用户创建和执行智能合约。然而,由于智能合约的执行是不可逆的,如果用户在操作过程中出现误操作,可能导致无法撤销的损失。因此,以太坊需要采取措施来处理用户误操作的问题。
一种常见的用户误操作是错误地发送代币。以太坊采用的是基于账户的模型,每个账户都有自己的地址。如果用户将代币发送到错误的地址,就无法再将其取回,造成了不必要的损失。
为了避免这种情况的发生,以太坊推出了一种名为“ERC20”的代币标准。该标准规定,所有符合要求的代币都必须实现一组标准接口,以便能够进行安全的交互。其中就包括了“接收者地址”的接口,让代币发送者在发送前能够确保接收者地址的正确性,从而在一定程度上避免了误操作造成的损失。
另一种用户误操作是过度支付矿工费用。以太坊是基于工作量证明的共识机制,需要矿工来验证和打包交易。矿工会收取一定的矿工费用作为交易的处理费用,如果用户设置的矿工费用过高,就会浪费不必要的成本。
为了解决这个问题,以太坊引入了名为“GasPrice”的机制。用户可以在交易中指定矿工费用的上限,从而避免不必要的过度支付。
不过,尽管有上述措施,用户误操作仍然无法完全避免,因此,以太坊开发者和社区正在积极探索更好的解决方案。例如,有人提出了基于链下支付通道的方案,可以让用户在链上进行之前的支付监管,从而避免误操作。还有一些团队正在探索基于人工智能的解决方案,利用机器学习等技术来识别并防止用户误操作。
总的来说,以太坊是一个日趋完善的智能合约平台,随着技术的不断发展和社区的不断壮大,相信会有更多的解决方案出现,让用户能够更加安全地使用以太坊。
3. 智能合约审计到底是什么
智能合约审计就是仔细研究代码的过程,在这里就是指在把Solidity合约部署到以太坊主网络中并使用之前发现错误、漏洞和风险;因为一旦发布,这些代码将无法再被修改。这个定义仅仅是为了讨论目的。
注意,审计不是验证代码安全的法律文件。没有人能100%确保代码不会在未来发生错误或产生漏洞。这仅仅是保证你的代码已被专家校订过,基本上是安全的。
讨论可能的改进,主要是为了找出那些可能会危害到用户的以太币的风险和漏洞。
智能合约审计报告的结构:
免责声明:在这里你会说审计不是一个具有法律约束力的文件,它不保证任何东西。这只是一个讨论性质的文件。
审计概览和优良特性:快速查看将被审计的智能合约并找到良好的实践。
对合约的攻击:在本节中,你将讨论对合约的攻击以及会产生的结果。这只是为了验证它实际上是安全的。
合约中发现的严重漏洞:可能严重损害合约完整性的关键问题。那些会允许攻击者窃取以太币的严重问题。
合约中发现的中等漏洞:那些可能损害合约但危害有限的漏洞。比如一个允许人们修改随机变量的错误。
低严重性的漏洞:这些问题并不会真正损害合约,并且可能已经存在于合约的已部署版本中。
逐行评注:在这部分中,你将分析那些具有潜在改进可能的最重要的语句行。
审计总结:你对合约的看法和关于审计的最终结论。
4. 智能合约除魅:它能避免俄罗斯违约和“镍逼空”吗
· 《文理两开花》主播 ·
肖小跑: 《羊群的共识》作者,金融行业从业者及连续创业者,播客《墙裂坛》主播,公众号“肖小跑”主理人。
王玮: 数学和计算机学霸,兼通技术与金融。若干年前“all-in”区块链领域,成为区块链行业知名意见领袖之一。
“智能合约”这四个字似乎也是个“模因”了:这是一个在金融 科技 业界、甚至所有和 科技 、数字化相关行业中都会听到的概念——一个“听起来很厉害但并不知道到底是什么”或者“不知道厉害在哪儿”的模因,反正这四个字代表了“ 科技 进步”,都“智能”了还能不厉害么?
但它到底是什么?能做什么?不能做什么?迫切需要智能合约专家用小白和文科生都能听懂的语言来除魅。
正好最近在现实世界的金融市场上,也发生了几件有趣的事:俄罗斯债券违约、还有金属市场上的“镍逼空事件”——所以我们干脆做一个案例分析,现场来看看智能合约到底能不能解决这些现实世界中头疼的问题。
· 本期提纲 ·
1、365度全景式“除魅”智能合约:它到底“智能”在哪儿?是一段代码?一份合同?还是一个机器人?
2、它只能解决虚拟世界的问题,还是也能用于现实世界?
3、俄罗斯债券违约:如果用了智能合约,结果会不同吗?
4、如果主权债放在智能合约上会不同吗?智能合约能解决“信用”问题吗?
5、镍逼空事件和LME“硬分叉”:如果LME采用智能合约来自动执行,结果会不同吗?
6、区块链上的“硬分叉”和现实世界中的“硬分叉”(取消交易)有什么不同?
7、“投票”+“冷静期”的设定能避免“多数人的暴政”吗?
· 文字稿 ·
小跑 02:48
“智能合约”(smart contract)这四个字好像已经变成一个“模因”了。 它是金融 科技 业界、甚至更广泛的跟 科技 、数字化相关的行业,都会听到的一个概念——反正这四个字就代表了 科技 进步、代表智能。
但它依然是一个“听起来很厉害,但不知道到底是什么”,或者“不知道到底厉害在哪儿”的概念。大部分人,包括我在内对它也是一知半解。所以今天请王玮老师用小白和文科生都能听懂的语言,给大家“除魅”一下智能合约。
另外,正好最近现实世界的金融市场上,发生了几件很有意思的事——包括俄罗斯债券违约、镍逼空事件。今天干脆拿这两件事来做一个案例分析, 来看看智能合约到底能不能解决这些现实世界中的头疼问题。
先请王玮老师给大家解释一下: 智能合约它到底“智能”在哪儿?
王玮 04:26
智能合约如今不管在区块链、DeFi、还是未来的web3领域,都是最重要的核心。比特币出来时,大家都说区块链是“分布式账本”;自从以太坊诞生,大家慢慢看到智能合约在web3.0甚至metaverse领域,作用越来越大,重要性也越来越高。
我先从发生在身边的一个小故事说起。我有一位师妹,是大学计算机系教授,去年问了一个问题:区块链我都能理解,但有一个问题没想明白——智能合约到底“智能”在哪儿呢?
之所以这么问,她一定是把“智能合约”理解为“智能代码”了。因为是搞技术的,她一定是跟别的代码比较,默认“智能合约”应该比别的代码更“智能”,才配叫“智能合约”。
我的答案是: 不要把它跟计算机代码相比,而是跟现实世界当中的“合同”相比——它是一段智能的“合同”,而不是智能的“代码”, 就好理解了。把它跟代码比较,有点侮辱“智能”这个词。但跟日常经济活动中签的合同来比,逻辑就比较贴切了。
那跟合同来比,它智能在哪儿呢?
我们日常的合同有几个特征:第一,有签署的双方或多方;第二,它有合同的条款,什么情况下执行什么条件做什么事情;第三,有合同标的物,一手交钱一手交货,合同约定了提供什么商品或者服务,付多少钱;第四,合同大概还有个编号,有个标识记录这是哪份合同,哪年哪月哪日签的,谁跟谁签的等等;第五,要有一个管理手段,签署多方要各持一份,防止某方把条款改掉。这五个特征基本代表了日常执行合同的最基本条件。
从这个角度,智能合约就好理解了。
比如以太坊的智能合约: 第一,它的代码和存储的数据,其实相当于合同条款达到什么条件、怎么自动执行——大家可能都知道智能合约的这个特点。第二,它还能够让“签署双方各执一份”这件事在链上实现,签署双方都能访问到区块链的时候,其实就是都能看到合同副本,而副本不是自己能掌握或篡改的,而是链上存储的。
这就很有意思了:中本聪发明区块链,是为了防止“双花”比特币这种纯数字资产的,结果到了智能合约时代,以太坊一下子赋予了它“帮助合同所有方存储无数副本、保证不被篡改”的神奇能力。区块链是全球化的分布式存储,它能够让世界上任意多的人来共同签署和执行一个合同,而不会让有被篡改的危险——这件事在传统领域做不到。因为技术的限制,你没法让任意无数人同时签署一份合同。
第三,智能合约的每一段代码都有一个对应的“地址”,执行这段代码的入口,这个入口可以理解为合同的编号,唯一的标识。
第四,智能合约本身还能够拥有“其他的财产”。 我们日常的合同只是一张纸,一个附属品,财产仍然在人的掌控之中——合同就算约定了镍的交割,纸怎么能控制镍的移动呢?而智能合约本身却能掌控财产。合同一定要有“标的物”,有“钱”有“货”,这个标的物是可以受到智能合约所控制的,相当于是被它“所拥有”的。在这种情况下,所谓的“自动执行”才有保障,它拥有对资产的全部执行权。
小跑 11:30
相当于司法执法合二为一。
王玮 11:33
对。所以有签订方、有无数可靠的备份、有自动执行能力、有可以找到的地址和入口、还有对于合同标的物的控制权——从这个角度,它确实比普通的合同要“智能”的多。
小跑 12:04
其实特别理解王老师师妹的想法,毕竟都是理科生,大家可能天然会从代码角度来理解。但作为非技术背景的普通人,我反而没有理解的这层障碍。
一看到“智能合约”这四个字,没有代码背景的人,天然就会先把它想象成一个合同,一个不用人来执行的“聪明的合同”。在现实世界中,比如我跟老板签了合同,但是他每个月不给我往账户里发工资,我也没办法。
另外,智能合约建在区块链上,就是说跟我签合同的人,我不用认识也行。我们之前没有做过买卖,没有建立过任何信任关系,其实也能签——因为区块链保证了“人手一份”且不能改。 这有点像我们讨论过的SWIFT——它实现了“信息”和“账户”合二为一;而智能合约是实现了合同的“内容”和“执行”合二为一,一旦建立了,执行就不用太担心了,智能合约会自动给我发工资,不用再信任老板。
可是,仔细再想的话,好像又有点琢磨不透。如果它的执行是自动的,那出了问题该怎么办呢? 我们订立传统合同时,会有后续发展过程中修改条款的情况,或者出现特殊情况导致合同不能按照订立时的条款来执行——如果出了差错,智能合约还是会不管不顾的执行下去吗?
如果真是这样,大家在“签”智能合约,按启动键的一刹那可能就要再想想了——只要一按,后面就没有改的余地了,对吗?
王玮 15:00
先说第一个问题:智能合约最大的价值就是能让世界上相互不认识、或者没有过任何协作关系的人,能立刻签署、执行这个合约,获得结果——这跟区块链的特征是一脉相承的。
很早我们在介绍区块链时,会强调它的一个特征——能让全世界本来没有任何协作关系的人,开始转账交易。中本聪发明的防止“双花”,就是为实现——我们虽然不认识,但我转账给你,你知道这笔转账一定是真实的,而不会出现任何问题。智能合约就继承了这个特点,不会因为咱俩不认识、或者你耍赖而导致合约执行不了。
但如果是这样,签订了合同一定能执行,就意味着它肯定不会变。那我又怎么敢随便签?
这一点倒是要从技术角度看了—— 智能合约是可以“变”的,“变”从技术角度讲,跟一个软件系统的升级没有太大区别。
如果你一定要改变某个条款,就相当于原来的作废,新的合同重签。智能合约也是一样,相当于你把代码升级, 现在是版本1.0,过两天我来了个1.1版,换掉1.0版——我们从现在开始执行1.1版——这是没问题的。但是问题又来了,谁有权利来做这件事呢?如果是合同签订双方都有权利改合同,就没任何意义了,完全实现不了。
智能合约其实相当于在一个“市场”上,合约由一个第三方来创建,然后大家分为甲方乙方丙方,在合约上去签署和执行。
之所以敢签署,是因为我作为甲方,相信乙方丙方丁方改不了这个合约,必须执行。第三方就是合约发布和创建方,它是有权利来升级合约代码的。这样一个机制,有点像建立一个“卖场”, 里边的买卖双方在卖场里签合约,做买卖,但改变不了卖场的规则——只有卖场的构建者有权利来改。这也是一种必要性。
这种必要性会带来什么问题吗?
肯定也有。比如,第三方有“监守自盗”的危险,如果他发现改动合约对自己有利,也可以去篡改合约,导致签订者的损失。就算他不是出于私利,而是想改进合约的执行效率,或者改善条款,但大家是否都同意?
我们常举的例子:一个“借贷”智能合约可以规定一个利率算法,比如说年化5%;如果调整成为年化30%——表面上看,利率是借贷双方互相支付的成本,跟规则制定方的利益没有直接的关系;但也不能因为是中立方,就可以随便瞎改规则, 于是你需要给买卖双方一个“缓冲期”或者“冷静期”,或者一种投票的机制,可以让参与者共同决定。如果接受,投票通过,就可以修改规则。
如果参与者不接受,你还要改的话,那么你给我个冷却期,我要退场。所以最终整个逻辑还是完备的,还是要引入第三方的制约机制。我觉得这一点跟现有金融市场的一些规则也很类似。
小跑 20:42
这就是为什么需要专家解读。如果只看这四个字,会觉得就是个冷冰冰自动执行的代码;但实际上背后还有一系列规则,而且这些规则大部分是可以映射到现实世界的。比如刚才的例子就很像一个“仲裁机制”。
既然如此,我们就在现实世界中找几个案例,分析一下在现实世界中出了问题的、让人挠头的情况,放在智能合约上,结果会不会不同?
我找了两个:一个是俄罗斯违约,一个是镍逼空。
先从俄罗斯开始。俄罗斯其实是个经常违约的国家,它主权债的违约次数是很频繁的:1918年沙皇帝国债券违约,1998年俄罗斯布雷迪债券几乎违约,最近俄乌战争,又把它带进另一个违约危险时期。
3月16号这一天俄罗斯两只美元债,要付1亿多美元的利息;付息前一个礼拜大家就开始担心,因为俄乌已经开打,它到底还有没有能力支付?如果支付用什么币种?用卢布吗?当时已经贬值20%。
结果是没有违约,危机暂时解除了。3月18号俄罗斯财政部已经还了,虽然晚了一天,不过仍然在30天宽限期内。但事情还没完,4月还有20多亿美元的本金偿还。所以到现在为止,会不会发生违约还是一个巨大的问号。
通常一个国家不愿意违约自己的主权债,主要原因是如果违约,市场会以某种方式惩罚你,比如失去信用,被评级机构贬为垃圾债,导致投资者在很长一段时间内不愿意碰,你就很难在市场上找钱。
但是一个国家违约的可能性实在太多了。上个世纪大量主权债的发行,其实都是为了资助战争,一旦战争爆发,肯定是要违约——因为钱都要拿去打仗。俄罗斯现在就是这么个情况,而且更棘手——不管是被动制裁,还是大家主动制裁,显然投资者已经不愿意碰了。俄罗斯基本与世界隔绝,也不能再失去更多信用,因为它几乎已经没有信用了;外汇储备被冻结,就算想还,去哪儿找美元、硬通货呢?
所以在这种情况下,“违约”这两个字究竟意味着什么?
在现实世界中,作为政府的债主,你其实是很难冻结或者强制出售一个国家资产的。这是一个信心加耐心的 游戏 ,如果你有本事在一个足够长的时间内,不停骚扰这个国家的政府,年复一年穷追猛打,就像当年保罗辛格为了追债,干脆把阿根廷的船给劫了。俄罗斯这个战斗民族不一样, 历史 经验表明,即使是最坚决的债权人,俄罗斯人也有足够的能力胜过,以死猪不怕开水烫的心态挡住所有追债。
这次还有个很有意思的地方: 这笔主权债中有一个条款,叫做“pari passu”——“一视同仁”原则。这是一个古老条款,一个多世纪前大家就用在债务合同中。它要求债务人对所有债权人要平等对待,不能厚此薄彼,只要跟其中任一个债主谈妥了,也要给予所有其他债主相同的偿还待遇。
自从保罗辛格利用了这个条款,向阿根廷政府讨债成功,之后大部分国家在发行主权债务时便删除了此条款——防止这些“钉子户”追债时再利用这个条款。
但是俄罗斯这笔债中却没有删除——要么是战斗民族太傲慢,觉得自己永远不会被起诉;要么就是忘了。 尽管如此,条款中关于“未来偿还“的字眼却神奇的消失了——是故意,也许是笔误,反正结果变成了:发行时会遵守“一视同仁”原则,所有债主都一样,但并不意味着“未来”还是一样的。
这个例子告诉我们,债券市场是一个完全由“样本文件”主导的“ & paste”交易,很少有人真的会看多达几百页的条款——但魔鬼也就在这里,人为的“调整”、“违约”空间太多了。
如果债发行在智能合约上,是不是就不会出现这种情况了?
王玮 28:09
这个案例特别有意思。本来还有点担心,因为区块链也好、智能合约也好,其实最不适合迎来解决债的问题。不过听了俄罗斯债务里的很多细节,又有好解决的地方了。
首先,“债务”这个东西,是一个典型的“信用”过程。从本质上,我把金融分为“信用过程”和“计算过程”两个部分。区块链、智能合约、DeFi等等,其实解决的是“计算性过程”的部分,而“债”是典型的“信用过程”。
实际上, “债券违约”这件事是最不适合于用智能合约去解决的。或者说,智能合约、区块链这些技术对于“债券违约”是最无能为力的——因为违约就是个信用丧失的过程, 就算用智能合约来写债务合约,但还债的过程涉及到还债主体,你需要把资产放入智能合约才能执行;不放进来,就执行不了。
这就回到最关键的一点:智能合约能保证自动执行的前提,是合约本身对标的物有“控制权”。但如果我未来才要还的钱——本金甚至是利息都要放在智能合约里,被它所控制,那我现在“借”钱干嘛呢?还得倒贴往里面放点利息。
在DeFi领域里,我们也看到非常多的项目和创业者,试图用智能合约来解决一个债务市场的问题,或者创建信用产品。其实没问题, 因为智能合约背后还可以有一套其他的保障机制,比如投票等等;最终把“信用”部分转化为其他的保障机制,还是有可能的。
信用的“执行部分”不可能转化为代码层面的保障机制,但这不代表智能合约不能对债务市场有所改进。
在俄罗斯债务例子中,它把“一视同仁”条款中的“未来”字眼去掉,这是它的权利,没有办法控制;买债的人一不留神,没注意到改动就买了——这一点其实在智能合约层面可以有所改进。
首先, 智能合约作为代码规则写进来,天然就有“一视同仁”的条款,因为代码是人人都可以执行的。只要有地址,有代码固化在里面,天下人都可以执行,所以默认一定是会“一视同仁”的,你要是想不“一视同仁”,反而要去做很多手脚。
关于“债券市场是一个以模板为基础, & paste的市场”——让我想起了过去几年,很多DeFi智能合约领域的“微创新”,也是把某些智能合约的代码全盘拷贝过来,然后改上两三个字。
但是你会发现在这种情况下,智能合约反而有价值了。为什么呢?
因为智能合约是精确的代码。一个审计机构是可以轻而易举找到改动之处的。几行代码的不同,意味着结果有什么差别,是可以精确推导和判断出来的。而在传统市场,因为自然语言是不精确的,就算让律师去审,我们也不知道这几句话改动的背后,是不是还隐含其他含义?或者导致什么意想不到的后果。
智能合约的审计机构是整个生态中非常重要的一方。这些机构往往是一些智能合约开发高手,或者白帽子黑客。他们的作用很像现实世界中的律师事务所,专门负责去审合同、审合约代码。
所以总结一下:智能合约不能解决债务的所有问题,但是它在债务的执行、和条款分析层面,仍有很大的作用。
小跑 35:47
所以我现在觉得可能俄罗斯这个案例,甚至整个主权债放在智能合约上,可能不太现实。因为对于本来就有意“不执行”的一方,可能根本不会签了。
这就引出了第二个案例:前些时候闹得沸沸扬扬的镍逼仓事件。
大概复盘一下:三八妇女节那天,市场上演了一个 历史 性的事件,我们在LME(伦敦金属交易所)市场上见证了史诗级的空头挤压。镍价创了有史以来最极端的价格波动,3月7日暴涨76%,达到每吨5万多美元;紧接着第二天突破一吨10万美元的关口。
这是一个明显的逼空。被逼仓的是青山——全球最大的镍生产商,在俄乌战争之前押错了方向。15万吨的镍空头头寸,其中5万吨是和摩根大通的OTC(场外)头寸;也就是说此刻青山已经欠JP大概10亿美金的保证金。
对于OTC的场外交易,其实大家还是有商量余地的,如果极端情况发生,各方会首先场外协商解决方法。这一次爆仓后,青山的经济上先向交易所垫付了保证金,不然清算会出现巨大问题。谈判的结果空头头寸先保留,之后LME“创造了 历史 ”,取消了交易,并且把镍的交易一直停到3月中旬。
从那一刻起,从全球市场的角度,LME的“信用”和“中立性”就出现了巨大的问号——突如其来的停牌影响了几千笔的交易,市场上其他参与方损失巨大。
这个案例,智能合约有可能在哪些环节会发生一些作用呢?
王玮 42:10
其实刚才在介绍智能合约的时候也提到了:我们确实可以“干预”智能合约,它并不是真的100%不能变。
从这个角度讲,LME的这种干预也可以算是“干预”的一种情况。但这里确实有一些问题:第一,智能合约的“干预”,必须要通过“有权限的人”去升级代码;或者直接去修改智能合约当中的参数来实现。这跟一个中心化的体系把交易“回滚”、“取消”还是有区别的。
智能合约的干预,不管是代码升级还是参数调整,它也只能是“向后干预”,改未来的规则,不能倒退回过去的某个阶段——区块链是不支持这种干预方式的。
当然,并不是说“向后干预”完全不能出现。举个例子,大家可能都听说过以太坊的DAO攻击事件, 为此以太坊发生了“硬分叉”——这确确实实是“回滚”,在以太坊的 历史 上就发生过这么一次。但是这次“回滚”的结果,是同时产生了ETC和ETH这两条链。
所以,在“计算性”的体系下,就算想要“回滚”,也不是100%的滚,因为仍然有人可以选择去执行那些没有被你“回滚”的合约。
但这在现实世界中没办法发生。 因为不可能有另一个平行世界的人,选择继续去成交被逼空的那些单,因为交易所只有一家,回滚就是回滚了,不会硬分叉出来两个交易所。
现实世界无法分叉,无法分叉出两个青山、两个俄罗斯、一吨镍变成二吨——两个平行世界中各一吨。这是物理世界决定的。所以智能合约、区块链这套体系,只能针对“纯数字资产”才有所谓的“保障执行”能力。
那LME这种“停止交易”、“取消交易”的情况,在智能合约领域能不能做到?
客观的说,也可以做到。一般可以通过两个手段: 第一个是投票。相当于LME的股东集体来投票,投票结果决定是否允许回滚,投票不通过就不能改。 这就是为什么现在的加密领域会推行“token economics”(通证经济学)体系,这是一套类似于股权的模型,投票结果可以绑定智能合约,自动执行结果。
第二,投票意味着什么?数字世界里的投票,是个“刚性”的结果——51%的人同意就改,但这不会引起“多数人的暴政”吗?49%的人不同意,也只能接受吗?投票不能解决问题怎么办?
答案是设定 “冷静期”或者“过渡期”——几天、几小时都可以。就算投票通过,也只能冷静期之后才能执行。不想玩的,就在这段时间内从系统里退出。改规则没有问题,但要给我离开的自由——这是最基本的自由了。
LME的做法,就是典型的“中心化”系统的弊端——就算要改规则,第一能不能让大家投个票?受到规则影响的人,起码要给一个发言的机会。第二,就算投票通过,也要给一些时间之后再改。
如果用智能合约来实现,并且遵守刚才的那套治理规则,它的信用程度肯定更高。所以从这个角度讲,智能合约在维护一个公平高效、更高信任的市场规则,是会有比较大用途的。
小跑 50:51
是的。虚拟世界中的一些机制也可以用到现实世界。 但是这些投票、冷静期等等规则有多大可实施性呢?
比如多数人的暴政。如果大家突然意识到有“多数人暴政”的可能性,比如我仇富,反正大家都是市场的韭菜,我们以数量取胜,联合起来投票,把大户账户里的钱全都转到我们账户来——如果真的按投票结果来自动执行,不是相当于“合理抢劫”吗?
但是如果设了冷静期,15天之后再正式“执行打劫”,大户肯定会离开,总不能等着被打劫。可是大户都已经离开了,我15天之后还打劫谁呢?整个 游戏 就没有存在的意义了?
王玮 52:17
这就是区块链和加密货币的一个核心理念——就是你的行为要有经济上的合理性。
如果小散这么做,就是损人不利己。不仅没有得到钱,唯一的结果是毁灭了这个平台的价值、信用。在这种情况下,你会发现小散也没有那么傻,他们知道自己投这个票是没有意义的。
这就回到中本聪写比特币白皮书中提到的,你可以51%的算力攻击,把比特币全拿到自己手里,但是比特币也因此归零了——你买的那些机器成本也回不来了,这对你有什么好处呢?
所以某种意义上, “经济模型”是区块链领域最核心的“模因”。我们维护的这套经济模型的合理性,导致攻击是没有意义、不合理的。
小跑 54:11
我现在觉得其实任何规则和机制,虽然看起来像是补救措施, 但实际上它发挥最大作用的时间——还是在事情发生之前。
大家的行为会在博弈影响下,自动找到一个最理性、“守规矩才能价值最大化”的结果来走。也就是说好的事前设计,会导致一个理性的结果。
王玮 55:13
智能合约和区块链最核心的价值,其实是“维护规则的有效性”。更适用于平台经济、或者双边市场的逻辑。 区块链和智能合约的创造者,是规则的制定者和维护者,本身并不一定是参与方。而参与方是世界上互不认识的人,共同参与 游戏 。
如果两个人认识、签一个合同、互换了合同文本、以及后续都有意愿保障执行——那这个场景下,智能合约没有太大意义。
小跑 56:55
非常同意。大家可能有各种通关升级办法,但是整个 游戏 规则大框架是可以用智能合约改进的。
— End —
播客《文理两开花》
5. 浠ュお鍧婃槸濡備綍淇濇姢鏅鸿兘鍚堢害瀹夊叏鎬х殑
浠ュお鍧婃槸濡備綍淇濇姢鏅鸿兘鍚堢害瀹夊叏鎬х殑锛
闅忕潃鍖哄潡閾炬妧鏈鐨勫彂灞曪紝浠ュお鍧婂凡缁忔垚涓轰簡鏅鸿兘鍚堢害棰嗗煙鐨勪富娴佸钩鍙般傛櫤鑳藉悎绾﹀熀浜庝互澶鍧婄殑铏氭嫙鏈鸿繍琛岋紝鎴愪负浜嗗疄鐜板幓涓蹇冨寲搴旂敤鐨勯噸瑕佸伐鍏枫傜敱浜庢櫤鑳藉悎绾︽槸涓绉嶈嚜鍔ㄦ墽琛岀殑绋嬪簭锛屽畨鍏ㄦф垚涓轰簡鏅鸿兘鍚堢害寮鍙戠殑鍏抽敭闂棰樸
浠ュお鍧婃槸濡備綍淇濇姢鏅鸿兘鍚堢害瀹夊叏鎬х殑鍛锛熼栧厛锛屼互澶鍧婂疄鐜颁簡鏅鸿兘鍚堢害鐨勬矙鐩掓満鍒躲傝繖涓鏈哄埗鍙浠ラ殧绂讳笉鍚屽悎绾︿箣闂寸殑浜や簰锛屽苟鍦ㄦ墽琛屽悎绾︽椂闄愬埗鍚堢害鐨勬潈闄愬拰璧勬簮銆傛櫤鑳藉悎绾﹀彧鑳戒笌瀹冧滑鐩存帴浜や簰鐨勫悎绾﹁繘琛屾暟鎹浜ゆ崲锛岃屼笉鑳界洿鎺ヨ块棶缃戠粶鎴栧叾浠栬祫婧愩傝繖鏍蜂竴鏉ワ紝鍗充娇鏅鸿兘鍚堢害瀛樺湪婕忔礊锛屼篃涓嶄細瀵规暣涓浠ュお鍧婄綉缁滈犳垚鍗卞炽
鍏舵★紝浠ュお鍧婂规櫤鑳藉悎绾︾殑鎵ц岃繘琛屼簡闄愬埗锛屼互闃叉㈠悎绾﹀嚭鐜版剰澶栫殑琛屼负銆備互澶鍧婂疄鐜颁簡涓绉嶅熀浜庣噧鏂欑殑鏈哄埗锛屼娇寰楀悎绾﹀湪鎵ц屾椂闇瑕佹秷鑰椾竴瀹氶噺鐨勪互澶甯侊紙ETH锛夈傚洜姝わ紝鍚堢害鐨勬墽琛屾椂闂村拰璧勬簮娑堣楅兘鍙楀埌浜嗛檺鍒讹紝浠庤岄伩鍏嶄簡鍚堢害閫犳垚鐨勬剰澶栧紑閿鎴栨敾鍑汇
姝ゅ栵紝浠ュお鍧婂紩鍏ヤ簡Solidity缂栫▼璇瑷鏉ョ紪鍐欐櫤鑳藉悎绾︼紝骞朵负寮鍙戣呮彁渚涗簡澶氱嶅伐鍏峰拰搴擄紝浠ヤ究鏇磋交鏉惧湴缂栧啓鍜岃皟璇曞畨鍏ㄧ殑鍚堢害銆係olidity杩樻彁渚涗簡鍐呯疆鐨勫畨鍏ㄦ満鍒讹紝濡傚紓甯稿勭悊鍜屾柇瑷璇鍙ワ紝浠ュ府鍔╁紑鍙戣呰瘑鍒鍜屼慨澶嶅悎绾︿腑鍙鑳藉瓨鍦ㄧ殑婕忔礊銆
鎬讳箣锛屼互澶鍧婁粠澶氫釜鏂归潰鏉ヤ繚鎶ゆ櫤鑳藉悎绾︾殑瀹夊叏鎬э紝浣垮緱寮鍙戣呰兘澶熸洿鍔犺嚜淇″湴鍦ㄤ互澶鍧婂钩鍙颁笂寮鍙戦珮璐ㄩ噺鐨勫幓涓蹇冨寲搴旂敤銆
6. 以太坊的智能合约是什么意思
以太坊智能合约是指,部署在以太坊上的智能合约,是一段程序,运行在以太坊的虚拟机EVM中,程序可以按照事先约定的某种规则自动执行操作,执行合约的条款。
同时,智能合约对接收到的信息进行反应,它既可以接收和储存价值,也可以向外发送信息和价值。
介绍
以太坊创始人V神指出过,以太坊智能合约中的“‘合约’不应被理解为需要执行或遵守的东西,而应看成是存在于以太坊执行环境中的‘自治代理’(autonomous agents),它拥有自己的以太坊账户,它们收到交易信息后就相当于被捅了一下,然后自动执行一段代码。”
智能合约可以调用其它的智能合约,这就是开启创立自治代理的能力,代理可以自己进行交易。在区块链上,我们存储的信息都是“状态”,而智能合约就是它用于状态转换的方式。
7. 浠ュお鍧婂備綍纭淇濋摼涓婅祫浜х殑瀹夊叏
浠ュお鍧婂備綍纭淇濋摼涓婅祫浜х殑瀹夊叏锛
浠ュお鍧婃槸鍏ㄧ悆鑼冨洿鍐呮渶鐭ュ悕鐨勬櫤鑳藉悎绾﹀钩鍙颁箣涓锛屽畠鍙浠ョ敤浜庡紑鍙戝垎甯冨紡搴旂敤绋嬪簭锛圖Apps锛夊拰鏁板瓧璧勪骇銆備互澶鍧婁笂鐨勬暟瀛楄祫浜э紙浠ュお甯佸拰浠e竵锛変互鍙婃櫤鑳藉悎绾﹀緢瀹规槗琚鏀诲嚮鑰呯獌鍙栵紝鍥犳や繚鎶よ繖浜涙暟瀛楄祫浜ф槸鑷冲叧閲嶈佺殑銆
鍦ㄤ互澶鍧婁腑锛岃祫浜у畨鍏ㄧ殑涓昏佷緷闈犱互涓嬪嚑涓鏂归潰锛
1.鏅鸿兘鍚堢害浠g爜鐨勫畨鍏ㄦ
鏅鸿兘鍚堢害鍖呭惈浜嗘墽琛屾煇浜涙搷浣滅殑浠g爜銆傜敱浜庝唬鐮侀敊璇鎴栬呮伓鎰忔敾鍑伙紝鏅鸿兘鍚堢害鐨勮祫浜у彲鑳戒細鍙楀埌濞佽儊銆傚洜姝わ紝浠ュお鍧婂紑鍙戜汉鍛樺繀椤荤‘淇濆湪閮ㄧ讲鏅鸿兘鍚堢害涔嬪墠杩涜屼弗鏍肩殑瀹夊叏瀹℃煡锛岄氳繃闈欐佷唬鐮佸垎鏋愬伐鍏风瓑鎵嬫垫鏌ュ悎绾︾殑浠g爜鏄鍚﹀瓨鍦ㄦ紡娲炪傛ゅ栵紝鍦ㄩ儴缃叉櫤鑳藉悎绾﹀悗锛岄渶瑕佸畾鏈熺洃鎺у悎绾︾殑浜ゆ槗骞舵鏌ユ槸鍚﹀瓨鍦ㄥ紓甯告儏鍐点
2.鍑忓皯鏅鸿兘鍚堢害鏀诲嚮鐨勯庨櫓
浠ュお鍧婂紑鍙戜汉鍛樺彲浠ラ噰鐢ㄥ悇绉嶆柟娉曞噺灏戞櫤鑳藉悎绾﹁鏀诲嚮鐨勯庨櫓銆備緥濡傦紝浣跨敤澶氶噸绛惧悕鏉ラ檺鍒朵氦鏄撶殑鏁伴噺鍜岄噾棰濓紝浠ラ槻姝㈡敾鍑昏呯洍鍙栬祫浜с傛ゅ栵紝寮鍙戜汉鍛樺彲浠ヤ娇鐢ㄤ互涓嬫帾鏂芥潵纭淇濆悎绾︾殑楂樺彲鐢ㄦэ細
闄愬埗鍚堢害鐨勬搷浣滄潈闄愶紝鍙鍏佽哥壒瀹氱敤鎴疯繘琛屾搷浣滐紱
鍔犲己鍚堢害鐨勮韩浠介獙璇侊紝浠ョ‘淇濅氦鏄撶殑鍚堟硶鎬э紱
閲囩敤寮婧愪唬鐮侊紝榧撳姳鍚堢害鐨勪娇鐢ㄨ呮彁渚涘弽棣堝拰鎶ュ憡娼滃湪鐨勬紡娲炪
3.浠ュお鍧婄綉缁滅殑鍘讳腑蹇冨寲鐗规
浠ュお鍧婁笉鍚屼簬浼犵粺缃戠粶锛屽畠鐨勫幓涓蹇冨寲鐗圭偣鍙浠ラ槻姝㈠崟鐐规晠闅滃拰鏀诲嚮锛岃繖涔熸槸纭淇濋摼涓婃暟瀛楄祫浜у畨鍏ㄧ殑閲嶈侀儴鍒嗐備互澶鍧婄綉缁滀笂鏈夎稿氬尯鍧楅摼鑺傜偣锛屾瘡涓鑺傜偣閮芥嫢鏈夊畬鏁寸殑鍖哄潡閾炬嫹璐濄傝繖鎰忓懗鐫鍗充娇鏌愪釜鑺傜偣鍑虹幇鏁呴殰锛屽叾浠栬妭鐐逛粛鐒跺彲浠ヤ繚鎸佺綉缁滅殑绋冲畾杩愪綔銆傛ゅ栵紝浠ュお鍧婄殑鏅鸿兘鍚堢害鏄鍩轰簬鍖哄潡閾炬妧鏈瀹炵幇鐨勶紝鎵鏈夌殑浜ゆ槗閮介渶瑕佽鎸夐『搴忚板綍鍦ㄥ尯鍧楅摼涓婏紝杩欎篃鏄淇濇姢鏁板瓧璧勪骇瀹夊叏鐨勪竴绉嶄繚闅溿
鎬讳箣锛屼互澶鍧婇噰鍙栦簡澶氱嶆帾鏂芥潵纭淇濋摼涓婅祫浜х殑瀹夊叏銆傚紑鍙戜汉鍛橀渶瑕佷弗鏍兼寜鐓у畨鍏ㄦ爣鍑嗙紪鍐欐櫤鑳藉悎绾︿唬鐮侊紝骞堕伒寰鏈浣崇殑瀹夊叏瀹炶返銆傚悓鏃讹紝浠ュお鍧婄綉缁滅殑鍘讳腑蹇冨寲鐗规т篃涓烘暟瀛楄祫浜х殑瀹夊叏鎻愪緵浜嗗熀鏈淇濋殰銆