红茶

‘博鱼在线官网’Python跨合约静态调用是如何实现的?

‘博鱼在线官网’Python跨合约静态调用是如何实现的?

本文摘要:上一期我们讲解了合约升级 API,描写了如何封存和迁入智能合约。

上一期我们讲解了合约升级 API,描写了如何封存和迁入智能合约。本期我们辩论如何横跨合约静态调用。API 只有一个,用法如下:下面我们明确描写一下这个 API 的用于方法。在这之前,小伙伴们可以在本体智能合约开发工具 SmartX 中新建一个合约,回来我们展开操作者。

某种程度,在文章中我们将得出这次介绍的所有源代码以及视频介绍。2. RegisterAppCall 用于方法用于 RegisterAppCall 函数前某种程度必须引进,可以通过下面的语句构建:from ontology.interop.System.App import RegisterAppCallRegisterAppCall API 有三个参数。分别对应目标合约、目标方法和方法必须的参数。

我们打算两个智能合约——合约 A 与合约 B。接下来我们通过合约 A 来静态调用合约 B 的功能函数。

合约 A 的代码如下:from ontology.interop.System.App import RegisterAppCallfrom ontology.interop.System.Runtime import NotifyHelloWorld = RegisterAppCall('028de32923bcc21e8a5485e4b0e81eff2d9ba08e', 'operation', 'args') # 定位被调用的合约,继续执行静态调用def Main(operation, args):if operation == "CallHello":opt = args[0]msg = args[1]return CallHello(opt, msg)return Falsedef CallHello(opt, msg):return HelloWorld(opt, [msg])合约 B 是最简单的 Hello World 合约,合约 A 将调用合约 B 中的 Hello 函数。特别注意:必须再行部署合约 B,提供合约 B 的合约哈希,并当成合约 A 中RegisterAppCall 函数的参数载入。def Main(operation, args):if operation == 'Hello':msg = args[0]return Hello(msg)return Falsedef Hello(msg):return msg3. SmartX 示例1. 部署合约 B,获得其合约哈希为028de32923bcc21e8a5485e4b0e81eff2d9ba08e;2. 将合约哈希载入合约 A 中的 RegisterAppCall 参数中;3. 部署合约 A;4. 运营 CallHello 函数,如图:5. 页面「运营实继续执行」,回到68656c6c6f20776f726c64(Hello World 十六进制字符串),网卓新闻网,回应调用顺利。

4. 总结本次技术视点中我们讲解了如何横跨合约静态调用,开发者可以打算两个智能合约——合约 A 与合约 B,通过合约 A 来静态调用合约 B 的功能函数。下一期我们将讲解本体 Python 智能合约语法的跨合约动态调用。


本文关键词:博鱼在线官网

本文来源:博鱼在线官网-www.purpleacesfans.com