Zephus 发表于 2022-2-26 11:17

理解智能合约ABI

ABI = Application Binary Interface


如果我们使用过类似protobuf或thrift作为RPC远程调用,那么就不难理解ABI的定义,类似.proto的接口定义,然后通过protobuf客户端工具生成不同语言的接口类文件,导入到项目中那么调用者就知道有哪些方法可以使用。

但是不同的是,以往web2的远程调用往往会有一个server端实现这个接口并暴露服务URL;而在Web3智能合约中所有的合约都是写在区块链中,一个合约调用另一个合约也是通过区块链的地址获取并解密区块,然后执行合约,所以ABI就必须引入到发起调用方的代码上下文中。
modifier


函数修饰器可以理解为其他语言中的interceptor,当某个方法执行前或后,使用modifier定义的代码块拦截执行。

例子中取款操作只能由owner发起,所以可以使用modifier代码块验证,并在方法头修饰
// modifier just like a java interceptor, use "_;" to decide where it can be executed firstly or afterwardmodifier onlyOwner {    require(msg.sender == owner);    _;}// only admin/owner can withdrawfunction withdraw() payable onlyOwner public {    // who call withdraw function, that means put back all the balance to deployer    payable(msg.sender).transfer(address(this).balance);}
页: [1]
查看完整版本: 理解智能合约ABI