首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有可能在javascript中构造对象并将其传递给Solidity?

是否有可能在javascript中构造对象并将其传递给Solidity?
EN

Ethereum用户
提问于 2021-06-25 20:59:54
回答 1查看 227关注 0票数 0

假设我将这两个契约定义在相同的实体文件中。

代码语言:javascript
运行
复制
contract Coin {
   string public name;
   constructor(string _name) public { 
      name = _name;
   }
}
contract MetaCoin {
   Coin public coin;
   constructor(Coin _coin) public {
       coin = _coin;
   }
   
}

现在,我想编写一个javascript迁移以进行部署,因此我尝试了以下步骤

代码语言:javascript
运行
复制
const coin = artifacts.require("Coin");
const meta = artifacts.require("Metacoin");

module.exports = async function (deployer, network, accounts) {

   await deployer.deploy(Coin,"diamond");
   const coin = await Coin.deployed();
   await deployer.deploy(MetaCoin, coin);
}

但是,我的最后一行await deployer.deploy(MetaCoin, coin);会导致一个错误,因为coin不是传递给MetaCoin构造函数的正确内容。

错误粘贴在下面

代码语言:javascript
运行
复制
Error: while migrating Masterchef: invalid address (argument="address", value="[object Object]", code=INVALID_ARGUMENT, version=address/5.0.5) (argument="_Pcake", value="[object Object
]", code=INVALID_ARGUMENT, version=abi/5.0.7)

我读过以下问题,但我认为它不适用于我的情况,因为我定义了Coin类型。实体函数可以接受来自JS的对象吗?例如,可以使用加号(**租户tenantObj**)接受租户对象?

EN

回答 1

Ethereum用户

发布于 2021-06-25 22:58:48

事实证明,您可以只传递硬币的地址,而不是硬币的抽象。

最后我用了

代码语言:javascript
运行
复制
   await deployer.deploy(MetaCoin, coin.address);

我不知道为什么这样做会奏效,所以如果有人能解释的话,那会有很大帮助。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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