很多区块链浏览器会显示:

Contract;

Read Contract;

Write Contract;

Function。

对于普通用户来说,这些内容看起来像程序员专用界面。

其中一个核心概念就是ABI。

ABI是什么?

ABI全称是Application Binary Interface。

在智能合约场景中,可以把它理解为:

“告诉外部程序如何与这个合约交互的接口说明。”

它描述了合约有哪些函数、参数以及返回值等信息。

为什么钱包需要ABI?

当用户在DApp里点击:

Deposit;

Withdraw;

Stake;

Claim。

这些按钮最终通常需要调用智能合约函数。

前端需要知道应该如何构造调用数据。

ABI就相当于一份接口说明。

ABI和智能合约源代码一样吗?

不完全一样。

源代码是开发者编写的程序。

ABI更像是外部调用这个程序时需要知道的接口信息。

一个合约即使源代码没有公开,也可能存在可以使用的接口数据。

为什么区块浏览器能够显示“Read Contract”?

如果合约代码已经被识别或者验证,浏览器可以根据ABI把函数整理成用户更容易理解的形式。

例如:

查看余额;

查看管理员;

查看Token名称。

Write Contract为什么更危险?

Read通常是读取链上状态。

Write则可能改变链上状态。

例如:

转账;

授权;

质押;

铸造;

修改配置。

所以普通用户看到Write Contract页面时,需要更加谨慎。

为什么不能随便调用Write Contract?

因为你可能直接与智能合约交互。

如果不知道参数含义,可能造成资产损失或者执行意外操作。

尤其是:

approve;

transfer;

setApprovalForAll;

withdraw。

这些函数都可能涉及真实资产。

ABI对imToken用户有什么实际帮助?

虽然普通用户不需要自己编写ABI,但了解这个概念以后,可以更容易理解:

DApp按钮;

钱包签名;

智能合约调用;

区块浏览器。

之间到底是什么关系。

为什么同一个Token可以有不同函数?

因为Token本身也是由智能合约实现的。

不同Token合约可以拥有不同的扩展功能。

所以不能看到某个函数名称,就默认所有Token都完全一样。

判断合约时为什么还要看源代码验证?

ABI只能帮助理解接口。

真正判断合约逻辑,还需要结合:

源代码;

权限;

事件;

历史交易;

项目说明。

因此,ABI只是理解智能合约的一扇窗口,而不是完整安全证明。


微信扫一扫