从技术角度看,Moonbeam和Moonriver平台的应用大多是智能合约,基于完全兼容EVM功能和Solidity开发。如果我们希望提升生产环境部署的Solidity智能合约安全性,审计是一种最常用的方法,在链上世界,也叫做智能合约安全审计

什么是智能合约审计

通过各种方法和手段,测试和审查智能合约的代码架构、逻辑和其它潜在的安全隐患。

常见的智能合约隐患

智能合约隐患格式多样,最直接的体现是黑客利用漏洞入侵系统, 或是智能合约均包含关键漏洞。有些智能合约代码由于其编译中的技术缺陷,导致Dao项目被盗;也有智能合约遭遇了恶性破坏,导致智能合约代码丢失。

智能合约的外部审核非常重要!有助于识别代码中的错误和漏洞,并检查程序逻辑。

如何查看智能合约是否通过安全审计

通常,项目的官网和官方社交渠道会刊登审计结果和报告。我们也可以通过智能合约审计公司官网查询审计结果。

比较知名的智能合约审计公司包括慢雾、Certik、Quantstamp等等。这些公司的官网上也会刊登他们的审计结果,并提供以往审计结果的搜索引擎。

通过审计的智能合约就是100%安全

当然不是!但经由第三方安全审计,项目有机会在上线初期及时发现并修正代码漏洞。而项目接受第三方智能合约审计的行为也传递着项目团队对用户资产安全、代码潜在漏洞的重视。

如果您需要交互链上资产,建议尽可能使用通过审计的智能合约。

自查智能合约是否安全的小技巧

请注意,Moonriver是无需许可即可部署智能合约的去中心化基础设施,Moonbeam团队不对已部署Moonriver的智能合约代码安全性负责。

请谨慎对待任何部署在Moonriver的应用和工具。

DYOR!!做好研究

技巧1:查询区块链浏览器

就像以太坊和Etherscan一样,Moonriver可以通过在Blockscout或其它EVM兼容区块链浏览器上查看Moonriver生态上部署的智能合约,包括源代码和ABI。

目前Moonriver支持的兼容EVM的浏览器是Blockscout,链接如下:

https://blockscout.moonriver.moonbeam.network/

举例说明🌰

Solarbeam安全吗?

请注意,我们用Solarbeam举例,但不对Solabeam项目本身做任何评价。

首先,通过blockscout来查看Solarbeam Router智能合约的一些信息:

https://blockscout.moonriver.moonbeam.network/address/0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B/write-contract

Solarbeam智能合约的地址是:

0xAA30eF758139ae4a7f798112902Bf6d65612045f

我们可以在Block Scout看到这个智能合约的源代码:

智能合约ABI :

和智能合约Bytecode:

通过Blockscout,我们也可以直接和智能合约上的方法进行交互,比如:

以上信息都有助于我们判断Solarbeam智能合约是否是安全,也可以同其它审计过的同类合约做对比。

注明:这些信息只有在智能合约部署者上传源代码之后才会显示。所以如果Blockscout上看不到该智能合约的相关信息,则更需要谨慎使用。

技巧2:及时取消授权

ERC-20类链上资产会有授权或者allowance这类方法,简单来说,这是授权一个第三方地址支配你的账户中一定数目的资产。

很多DEX类或流动性类合约,为了操作方便,通常会自动让用户通过无资产上限的授权。这种授权容易带来较大的安全隐患,尤其是当授权后的智能合约被黑客控制,或者有其它漏洞,追回被盗的丢失资产将难上加难。

所以,在使用完需要授权的应用或协议后,建议取消授权

我们可以通过Blockscout等工具,在相应的ERC20合约中直接将对应地址的approval数额设置为0,这是取消授权的常用做法。

举例说明🌰

我们再次以Solarbeam的平台资产Solar为例

Solar的ERC20合约地址:

0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B

Solar在Blockscout的地址:

https://blockscout.moonriver.moonbeam.network/address/0x6bD193Ee6D2104F14F94E2cA6efefae561A4334B/write-contract

我们可以直接调用这里的approval方法,并将你想要取消授权地址的approval额度改为 0:

我们也正在探索使用方法更加简单的取消授权工具,请等待更新。

如果你是专业的开发者

还有多种智能合约测试方法可供选择,这里仅举例多类型攻击的测试方法:

测试多种攻击,以确保合约是否安全。例如:

  • 重入攻击(Reentrancy attack)
  • 数值溢出(Over and under flows)
  • 重放攻击(Replay attack)
  • 重排攻击(Reordering attack)
  • 短地址攻击(Short address attack)
  • 其他更多

未完待续!

🚨警钟长鸣,资产安全牢记心间🚨

欢迎加入Moonbeam社区

期待与您携手打造去中心化跨链世界 ~

Moonbeam Community欢迎您加入Moonbeam官方社区,期待与您携手打造去中心化跨链世界。Moonbeam是同时兼容波卡(Polkadot)生态与以太坊(Ethereum)生态的智能合约平行链。

△ 获取Moonbeam官方最新资讯

更多Moonbeam信息

官网: https://moonbeam.network

微博:https://weibo.com/u/7606061434

Twitter: https://Twitter.com/MoonbeamNetwork

Medium: https://t.me/Moonbeam_Official

Discord: https://discord.gg/PfpUATX

中文电报群助手:@MoonbeamSister