区块链与电信:本体技术视点 | Python跨合约静态调用是如何实现的?

  1. 导语

  上一期我们介绍了合约升级 API,讲述了如何销毁和迁移智能合约。本期我们讨论如何跨合约静态调用。API 只有一个,用法如下:

  

  下面我们具体讲述一下这个 API 的使用方法。在这之前,小伙伴们可以在本体智能合约开发工具 SmartX 中新建一个合约,跟着我们进行操作。同样,在文章中我们将给出这次讲解的所有源代码以及视频讲解。

  2. RegisterAppCall 使用方法

  使用 RegisterAppCall 函数前同样需要引入,可以通过下面的语句实现:

  from ontology.interop.System.App import RegisterAppCall

  RegisterAppCall API 有三个参数。分别对应目标合约、目标方法和方法需要的参数。我们准备两个智能合约——合约 A 与合约 B。接下来我们通过合约 A 来静态调用合约 B 的功能函数。

  合约 A 的代码如下:

  from ontology.interop.System.App import RegisterAppCall

  from ontology.interop.System.Runtime import Notify

  HelloWorld=RegisterAppCall('028de32923bcc21e8a5485e4b0e81eff2d9ba08e', 'operation', 'args') # 定位被调用的合约,执行静态调用

  def Main(operation, args):

  if operation=="CallHello":

  opt=args[0]

  msg=args[1]

  return CallHello(opt, msg)

  return False

  def 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 False

  def Hello(msg):

  return msg

  3. SmartX 示例

  1. 部署合约 B,得到其合约哈希为028de32923bcc21e8a5485e4b0e81eff2d9ba08e;

  2. 将合约哈希写入合约 A 中的 RegisterAppCall 参数中;

  3. 部署合约 A;

  4. 运行 CallHello 函数,如图:

  

  5. 点击「运行预执行」,返回68656c6c6f20776f726c64(Hello World 十六进制字符串),表示调用成功。

  4. 总结

  本次技术视点中我们介绍了如何跨合约静态调用,开发者可以准备两个智能合约——合约 A 与合约 B,通过合约 A 来静态调用合约 B 的功能函数。下一期我们将介绍本体 Python 智能合约语法的跨合约动态调用。

文章内容系本站作者个人观点,不代表本站对其观点赞同或支持,文章的版权归该作者所有。如需转载,请注明文章来源。本文地址:http://www.cis.net.cn/kejikuaixun/44105.html
留言与评论(共有 条评论)
验证码:

最新文章

本体技术视点 | Python跨合约静态调用是如何实现的?

科技快讯
1.导语上一期我们介绍了合约升级API,讲述了如何销毁和迁移智能合约。本期我们讨论如何跨合约静态调用。API只有一个,用法如下:下面我们具体讲述一下这个API的使用方法。在这之前,小伙伴们可以在本体智能合约开发工具SmartX中新建一个合约,跟着我们进行操作。同样,在文章中我们将给出这次讲解的所有源代码以及视频讲解。2.RegisterA

任何糟糕的状况下都不要丧失希望 即使你已经亏去了90%

科技快讯
任何糟糕的状况下都不要丧失希望。投机市场,有自己的判断不容易,在亏损中坚持自己的判断更不容易。统一回复老币微信文章的韭菜评论:不要用短线满仓的思维去揣测老币做空爆了多少,我的操作以月为单位,并且绝不会加杠杆满仓。6月开始,这个做空账户起初投入60万,算上6月底的一次提现,截至发稿

调查发现:俄罗斯穷人比富人更加了解数字货币

科技快讯
最近一项关于俄罗斯人有多了解数字货币的调查结果很有意思,调查发现收入更低的俄罗斯人比富人更了解数字。同时,大众对数字货币的关注度随着价格的下降而下降。关注数字货币的俄罗斯人数下降根据俄罗斯大型市场调查研究公司RomirHol

为什么自由职业者现在应该开始使用区块链

科技快讯
如果你对加密行业有所了解,你就会知道它在以惊人的速度增长。这似乎是我们在日常生活中的一项使命,在CME等大公司的支持下,它正在顺利完成这一任务。它的流行绝对改变了我们用传统的法定货币看待和操作的方式。另外,作

萌奈币Monacoin遭受自私挖矿攻击损失约9万美元

科技快讯
加密货币Monacoin疑因遭到被称作Blockwithholdingattack(中译:扣块攻击)或称SelfishMining(中译:自私挖矿)的攻击,在5月13-15日间海外交易所Livecoin传损失约9万美元。这场攻击可能源于自私挖矿,某一矿工在发现了一个新块之后,并不向其他矿工广播此一区块。因此获得发现下一个区块的时间优势,这个秘密挖矿的矿工则

区块链普及全球行第二轮第四站-成都

科技快讯
……成都带不走的只有你和我在成都的街头走一走直到所有的灯都熄灭了也不停留……“成都,她走了,我们来了,带来了区块链”。由全球区块链爱好者联盟(全链盟)发起的区块链普及全球行第二轮成都站完美收官!1.一座来了就不想走的城市初春,全链盟再次到充满魔力的“天府之城”—四川成都,让全国区块链爱好者的目光聚焦成都。大会于3月20

央行数字货币怎么购买(央行数字货币发行了吗)

科技快讯
从2014年至今,央行数字货币(DC/EP)的研究已经进行了五年,如今央行数字货币呼之欲出。据媒体报道,央行数字货币采用双层运营体系,即人民银行先把数字货币兑换给银行或者是其他运营机构,再由这些机构兑换给公众。在这个过程中,央行将坚持中心化的管

世链合约节|一招教你实现胜率95%的短线高频交易

科技快讯
石油大战、股债双杀、多国熔断、美联储量化宽松政策出台、利率再三降息…传统金融市场跌宕起伏,加密货币市场同样备受牵连。如今市场人心惶惶,多空军争论不休,大V跳水,散户迷茫,放眼市场,不知何去何从的投资者

投资币看10.9数字货币行情分析:大饼隐忍不发,TRX、ONT却接连领涨,谁有机会成为下一个妖币

科技快讯
盘面热点1、BTC逐渐走强,但却隐忍不发昨晚BTC向上突破三角形整理形态末端,突破6730高点后随即回调,虽然BTC已经走出下跌趋势,进入上涨趋势。但仅仅上涨100美金后,随即回调,主力在横盘多日的BTC选择缓慢突破,隐忍不发,大饼的蓄势待发之势,不禁让一刀在盘面上闻到了一股大战前硝烟的味道。2、BTC隐忍不发,TRX