就链上合约而言,总的来讲,就是把规约写进代码之中,而后把它放置到链上,使其自行运行。
它和你与我所签的那种能够撕毁后重新再来的纸合同不一样,代码一旦被部署,便成为了链上无法更改的“铁律”。
要说这东西,其优点在于具备透明的特性,而且能够自动执行,然而坑同样是相当多的,在进行书写操作时,倘若稍有疏忽,或许钱款就无法找回了。
你得明白,链上合约的“不可篡改”是双刃剑。
好处是没人能暗箱操作,坏处是一旦有漏洞,修补起来可费劲了。
曾经有那么一个时期,存在着一个声名远扬的 DAO,只因契约当中设有一道“隐秘通道”,致使钱财被人逐步地、一点一点地给掏空了。
这仿佛是你针对自动售货机开展编程工作,然而却偏偏忘记锁上后盖情形下,当硬币投放进去时,商品和找的零钱极有可能全部被他人拿走。
具体到写合约,常见的一个坑叫“重入攻击”。
简单说,就是函数没执行完,又被外部调用钻了空子,反复提钱。
去应对的法子并非繁杂,在进行书写之际采用一种“检查的、效果的、交互的”模式,或者径直给关键的函数增添一把“锁”,于执行的这段期间不让其他的调用进行插队得以实现。
代码这玩意儿,你得把它当成精密仪器,每个齿轮都得卡准。
不过呀,链上合约存在着最让人费心思去琢磨的地方,那就是,它尝试运用绝对理性的代码,去替换掉充满不确定因素的人。
信任从人转移到了代码,但代码又是人写的。
这不就绕回来了嘛?
你认为你所信赖的是数学以及密码学,实际上呢,最终信赖的却是背后那群不进行睡觉休息的开发者,他们有没有把工作完成得扎实可靠呢。
合约写得再漂亮,人也得保持清醒。

你们在玩链上应用的时候,有被合约坑过的经历吗?
或者见过什么特别巧妙的合约设计?
唠唠呗。
转载请注明出处:TP钱包官方网站,如有疑问,请联系(TokenPocket)。
本文地址:https://huayansi.com/zxbtpqb/3536.html
