区块链的一些概念——进阶篇
区块链的一些概念——进阶篇
如果你看过上一篇的话,应该已经对区块链有了基本的认识。有这些前置知识,就可以继续深入一项更加复杂的区块链技术:智能合约。
什么是智能合约?
区块链上的合约,其实就像是互联网上的后端服务。它运行在区块链上,能够在满足特定条件时自动执行预设的规则。相比于普通的后端应用,它有如下特征:去中心化和不可篡改性。上一篇说过,区块链上一切东西都必须是公开透明且去中心化的,既然智能合约被部署在链上,那它也必须满足区块链的基本原则。如今区块链上有很多的合约,每个合约都有自己的地址。而每个合约中都有一些函数,这个部分可以类比为互联网上不同网站的不同功能。而与网站一样,智能合约也可能有管理员和拥有者,有些功能只能由他们来执行。
我在上一篇已经介绍了NFT的概念,其实NFT的交易也是靠智能合约实现的。如果我想买一个NFT,而且我的出价被卖家接受了,那就会触发一个智能合约:它会自动把NFT的所有权转给我并把一定数量的ETH转给卖家,同时也可能会给这个NFT的原作者转一些版税。这整个过程都是委托给合约的,没有第三方干预。
智能合约并不一定是被动触发的,也可以被显式调用,比如我想把一些ETH换成WETH(Wrapped ETH),就可以调用某个转换合约,合约会把我的ETH收走并换给我等量的WETH。
关于gas
我们都知道,运维一个网站要花不少钱,其中开销的大头是服务器产生的费用。但是智能合约不一样,它是部署在一个去中心化的链上的,没有一台特定的服务器来运行,那岂不就为所欲为了吗?我甚至可以把一些简单的网络接口部署在区块链上,这样能免费薅区块链的网络资源啊,怎么还会有人傻呵呵租服务器去部署API呢?
只能说想得美,区块链虽然去中心化,但是为了应对你们这些有上述想法的人,它有一个独特的机制:gas。
Gas 是以太坊网络中的交易手续费单位,用于支付计算资源,防止有人滥用。gas和ETH的换算是:
一般来说,gas由合约的调用者支付,你支付了gas后其中大部分会因为通缩机制被销毁(详情见EIP-1559号提案),另外小部分被支付给矿工或验证者来奖励他们打包这次交易(关于挖矿的内容可以看上一篇)。
看到这里你可能已经发现了一个问题:gas由调用者支付,但是真正消耗gas的是合约的行为,那如果我要调用的合约消耗gas很高,那岂不很亏?事实上确实如此,有人会故意设计gas陷阱,其中没别的,全是高gas操作,你一旦不小心调了钱就基本上没了。为了避免踩坑,一般在交易前会估算gas消耗,并且在交易信息中会附带一个gas限制,交易过程中一旦高出了这个限制就会立刻停止。
同样,好的合约的标准之一就是尽量为调用者降低gas消耗。很多合约是开源的,如果在调用陌生合约或购买新币之前去看一眼源码,就能很大程度上避免踩到gas陷阱或买到貔貅币,这也是我建议普通的投资者稍微学一点solidity的原因。
著名的The Dao攻击——合约的漏洞
既然说智能合约是区块链上的“合同”,那它也像现实中的合同一样会存在可以被利用的漏洞。想象你用一个ATM机取钱,你发现你有200块在账上,于是你决定取100。但是,你发现这台ATM机在给你钱之后才会更新你账上的余额,也就是说,这次取完钱后,你手里有了100块现金,而你发现你账上仍有200块,且一段时间后才会变成100。此时我相信你的想法和大部分人一样,肯定是趁它没更新不断地发送取钱请求,这样以来你拥有的钱不再是一个定值,而是取决于你的手速。
这个例子就是所谓的重入攻击(Reentrancy Attack),在2016年,以太坊曾被迫进行过一次硬分叉,自此分化成了ETH和ETC。我们都知道区块链一般情况下是绝对不允许有分叉的,所以一旦硬分叉一定是遭遇了一些极度棘手的攻击。2016年这次硬分叉的始作俑者就是利用了这样的一个漏洞进行重入攻击,直接提走了360万枚ETH,放到现在这些币值差不多6.9亿美元。这只是区块链历史上数次攻击的其中一次,由于ETH非常值钱,所以每次攻击的损失都是数以亿计。
可以看出,虽然区块链和智能合约都是去中心化的,它的机制绝对安全且公平,但是就像常言所说,人是最大的不确定因素。智能合约毕竟是要人类来编写,而是人就会出错,所以区块链最大的弱点还是在人。现在编写智能合约一定是要经过及其严苛的检查才能部署上链。
合约能整的活
一种技术一旦发展到一定程度就会诞生一些娱乐性玩法,合约也不例外。想象一下如果有一个合约规定,你猜一个1-6之间的数,合约随机生成一个,猜对了有奖励,猜错了有惩罚。这样一来就能实现一个简易的链上赌场。而且这种赌场比一般的线上或线下赌场都更加公平透明,因为区块链上的东西谁都可以看,你可以看到赌场合约到底是咋写的,没有人能出千。
另外,还有一些娱乐性的链上养成游戏,玩家可以买一些NFT宠物来和别人战斗(类似宝可梦)。这些NFT甚至还能繁殖出小NFT,可以说非常离谱。由于你的宠物NFT被记录在区块链上,它的每一个动作都会被记录下来,并由所有的节点共同见证,想想还挺好玩的。有一个宠物游戏平台叫CryptoKitties
,曾经由于交易过于火爆,导致以太坊 Gas 费飙升,网络拥堵。
总之,区块链由于其独特的特性已经是另一个互联网体量的东西,在上边基本啥都能干,你需要的只是一个钱包。我觉得以后元宇宙或者意识网络的实现一定也是依靠区块链技术,所以我现在多玩玩区块链也算为将来的我投资了(