如何在Solidity中通过合约地址获取已部署的智能合约实例?
已知合约地址重新获取Solidity合约实例的方法
在Solidity中,无需调用特殊函数,直接通过合约类型地址转换就能实现需求,具体语法如下:
MySmartContract originalFoo = MySmartContract(fooAdress);
说明
只要当前代码中已经定义了MySmartContract的合约接口或完整代码,就可以直接将目标合约地址转换为对应的合约类型实例。转换完成后,originalFoo拥有和最初foo实例完全相同的调用权限,可正常调用合约的所有公开/外部方法。
完整示例
// 定义目标合约 contract MySmartContract { // 示例方法 function doSomething() public pure returns(string memory) { return "Hello World"; } } contract Example { function createAndRestore() public { // 创建合约实例 MySmartContract foo = new MySmartContract(); // 获取合约地址 address fooAdress = address(foo); // 从地址恢复合约实例 MySmartContract originalFoo = MySmartContract(fooAdress); // 验证:调用恢复后的实例方法 string memory result = originalFoo.doSomething(); // result 将返回 "Hello World" } }
内容的提问来源于stack exchange,提问作者Thaiminhpv
相关产品推荐
相关产品推荐

