如何将struct从合约A传递到合约B?最佳实践

2024-02-08

我发现这样,当创建一个具有结构的通用接口时,然后合约A和B继承该具有结构的接口。

但我想知道是否还有其他方法?

是否存在可以更新具有结构的合约的情况?

pragma experimental ABIEncoderV2;
pragma solidity ^0.6.0;
 
interface params {
     struct  structTest {
        uint256 data;
    }
}

contract contractA is params{
    function testCall(structTest calldata _structParams) public pure returns (uint256){
        return _structParams.data;
    }
}

contract contractB is params{
    contractA aContractInstance;
    
    constructor (address _a) public {
        aContractInstance = contractA(_a);
    }
    
    function test(structTest calldata _structParams) public view returns(uint256){
        // call contract A from B and pass structure
        return aContractInstance.testCall(_structParams);
    }
}

interface IContractA {

    struct User {
        address addr;
    }
    function getUser(aaddress addr) external view returns (User memory user);
}

contract contractB{

    function getUserFromContractA(address addr) public view
        returns (IContractA.User memory user)
    {
      ContractA = IContractA(addrContractA);
      user = ContractA.getUser(addr);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将struct从合约A传递到合约B?最佳实践 的相关文章

  • C、从文件读入结构体

    我已经为此苦苦挣扎了好几天 但我不明白为什么它不起作用 我正在尝试从文件中读取数字 数字如下所示 0 2012 1 1 2000 000000 0 2012 1 1 3000 000000 1 2012 1 1 4500 000000 我的
  • Python ctypes - 接受结构的 dll 函数崩溃

    我必须在 ms windows xp 下访问 POS 终端 我正在使用Python 2 7 我加载的 DLL 中用于付款的关键函数接受两个指向结构的指针 但它崩溃并返回 1 通信错误 但没有进一步的消息 请注意 当调用支付函数时 并非 PO
  • web3.js如何搜索所有曾经创建的合约并查看地址

    我是 web3 js 和 Solidity 的新手 我的问题与我们在区块链上搜索的方式有关 如果我们知道合约地址 就很容易搜索特定合约 然而 我们如何使用最初用于创建合约的地址来查找和识别特定类型的合约 例如 我有一个合同 Contract
  • 如何在 Python 和 web3.py 中获取 Solidity 恢复/需要错误原因

    我正在努力抓住要求 交易恢复时出错 但我得到了交易的哈希值 我正在使用web3 py def addParticipants request web3 Web3 HTTPProvider settings Blockchain IP add
  • 我应该声明并检查 PHP 中是否存在变量吗?

    我注意到 XAMPP 上启用了严格的错误报告 并且现在出现未定义的索引错误 我只有两个小问题 我还在学习 我知道你不知道have在 PHP 中声明变量 但是声明它们有什么好处吗 如果不是 为什么在我未定义错误的情况下启用严格错误报告时会出现
  • C - 在一行中更改结构体数组的所有值

    我可以声明一个结构 typedef struct int var1 int var2 int var3 test t 然后使用默认值创建这些结构体的数组 test t theTest 2 1 2 3 4 5 6 但是在创建数组之后 是否有任
  • 如何删除solidity中的数组项

    我正在尝试删除 Solidity 数组中的某个项目 我正在探索一些文章 https ethereum stackexchange com questions 1527 how to delete an element at a certai
  • 如何构建 iPhone Xcode 项目?

    建立组 文件夹的好方法是什么 我已经尝试通过功能 功能加模型等的用户界面 与一个共同的组 我也尝试过UI 模型等 前者将类似的东西放在一起 这非常适合 iPhone 范式 后者意味着我会跳得更多 你怎么认为 标准的 Xcode MVC 文件
  • 如何正确构建我的 HTML 文件?

    对于一个基本的静态网站 有几个页面和子页面 我对 HTML 页面目录结构的最佳实践有点困惑 假设我有一个像这样的简单网站 索引 主页 页面 关于页面 联系页面和新闻页面 在新闻页面上 有两个链接指向新闻页面的两个子页面fizz html和b
  • Solidity v0.6.0。后备功能。需要它们做什么?

    阅读 Solidity v0 6 0 的文档后docs https docs soliditylang org en latest 060 breaking changes html semantic and syntactic chang
  • Solidity有HTTP请求功能吗?

    我正在使用以太坊制作一个项目 在这个项目中 我正在签订一份名为 A 的合同 当我向 A 发送消息时 我希望 A 发出网络请求 Solidity 是否可以使用 http 请求 方法 GET POST 以太坊区块链无法与外界交互 否则它将不再是
  • 通过python3计算uniswap 3.0池(对)地址

    我遇到了一个关于如何计算的问题 新的 uniswap 版本 3 池 早期版本称为pair 地址基于1 https github com Uniswap v3 sdk blob aeb1b09 src utils computePoolAdd
  • C 相同结构不同尺寸

    我的问题与此相关 c 在struct中定义不同大小的数组 https stackoverflow com questions 17956697 c define arrays in struct with different sizes 但
  • Solidity ParserError:预期为“;”但得到了“{”

    使用版本0 6 0 pragma solidity 0 6 0 contract Test function sendValue address payable recipient uint256 amount external bool
  • NPM 无法在 Windows 上安装“truffle”

    我正在尝试使用 npm 安装 truffle 但我不熟悉 NodeJS 并且不明白为什么 npm 不会安装它 我尝试npm install g truffle在具有管理员权限的 Powershell 中 经过几行输出后 我收到以下错误消息块
  • Solidity:父合约可以看到子合约的数据更新吗?

    我过早地实现了以太坊游戏 我将我的代码分为两个合同 将 游戏 功能与管理员调用的功能分开 Admin sol 继承自 Game sol 如下所示 Admin 中创建了一个 struct 对象 但 Game 看不到它 Getter 函数不返回
  • 更新实时智能合约

    如果我有一个智能合约 其中硬编码了一些其他智能合约的地址 例如 也许我的合约有一些外部流动性挖矿金库的地址 它会定期存入一些余额 现在假设我想更新该地址列表并迁移它而不扰乱当前合约的操作 最好的方法是什么 以太坊字节码是不可变的 所以简单的
  • 结构填充和包装

    考虑 struct mystruct A char a int b char c x struct mystruct B int b char a y 结构的大小分别为 12 和 8 这些结构是填充的还是包装的 何时进行填充或包装 Padd
  • 如何解析两个同名的结构体?

    在我的代码库中 我发现两个模块具有同名的结构 它给出了名称冲突错误 有没有不用改代码就可以解决的办法 这是一个可怕的黑客 但可以使用宏来重新定义结构的名称 如下所示 a h struct collide int a b h struct c
  • 用户上传文件夹结构

    随着网站的增长 用户上传的文件夹结构会对性能产生影响吗 例如 我考虑用这种结构来存储照片 相册 Public folder Uploads Users User ID Album ID contains all photos in the

随机推荐