首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于复杂场景,哪一种是智能契约之间进行交互的最佳方式(稳健性0.6)?

对于复杂场景,哪一种是智能契约之间进行交互的最佳方式(稳健性0.6)?
EN

Ethereum用户
提问于 2020-04-07 09:56:44
回答 1查看 754关注 0票数 0

我在学稳固的东西。

我想写一个复杂的演示场景来测试坚固性和智能契约的威力。

我对智能合同之间的互动表示怀疑。

如果有很多聪明的合同,那么它们之间的最佳互动方式是什么呢?

场景示例:

  • 我有一个ContactA及其函数。
  • 当ContractA中发生一些事情时,必须在ContractB中触发一些东西(在本例中是HelloWord.sol)。
代码语言:javascript
复制
pragma solidity ^0.6.0;

contract HelloWord 
{
  string hello= "Hi buddy";
  function getSaluto () public view returns (string memory saluto ){
    return hello;
  }
}

另一个具有另一个合同的文件:

代码语言:javascript
复制
pragma solidity ^0.6.0;

import "HelloWord.sol";
contract ContractA is HelloWord
{
   event LogString(
     string errore,
     string saluto
   );
   receive() external payable {
     emit LogString("errore receive saluto " ,  HelloWord.getSaluto() ); //call to HelloWord function
   }
}

但是,这是与另一个契约交互的最佳方式吗?

另一个我不知道如何实现的不同契约的场景:

  • 如果我必须调用另一个与ContractA无关的契约(因为它不是继承的),那么如何在客户端应用程序中调用它呢?

非常感谢。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2020-04-07 12:45:22

在您的示例中,智能契约之间没有交互。HelloWord.getSaluto()实际上是一个内部调用,即您的智能契约调用自己的函数,仅在基本智能契约中定义。真正的交互场景如下所示:

代码语言:javascript
复制
contract A {
  uint state = 0;

  function foo (uint x) public returns (uint) {
    return state += x;
  }
}

contract B {
  A a;

  constructor (A _a) public {
    a = _a;
  }

  function bar (uint y) public {
    emit Zoo (a.foo (y));
  }

  event Zoo (uint z);
}
票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/82225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档