ABI在区块链中的使用

ABI,application binary interface,如名字所示,是程序被编译为binary code后二进制程序的接口,是二进制格式的程序之间通信方式,是low level的,与机器硬件紧密相关的。与此对应的是我们熟悉的API,是high level的,硬件无关的。当API更新时,程序员需要更新代码以符合新的API比如更新参数个数。而ABI更新则需要编译器重新编译代码。
ABI是一个json格式的文件,可以很好的编码和解码。
区块链项目使用ABI,因为在区块链里保存的合约都是二进制格式的,虚拟机执行这些二进制程序,要有一种合适的方式传递调用所需要的合约名,函数名,函数参数,通过对ABI里json格式解析就可以得出调用哪个合约哪个function和用哪些参数。
ABI json格式的定义和解析,在不同操作系统有不同定义(linux用的ELF,windows用的PE),在区块链中也是如此,以太坊和EOS生成的ABI格式就不同,里面包含的tag名称和数量也不同。所以跟操作系统类似,不同区块链的生成的合约不兼容。

你可能感兴趣的:(ABI在区块链中的使用)