找回密码
 立即注册
查看: 398|回复: 0

理解智能合约ABI

[复制链接]
发表于 2022-2-26 11:17 | 显示全部楼层 |阅读模式
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);}
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-11 05:10 , Processed in 0.262557 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表