Solidity

Truffle 開發從合約地址獲取新的合約實例

  • October 18, 2020

truffle develop控制台,有沒有辦法從合約的地址獲取合約實例?

我有一個安裝了 truffle/geth 的遠端 ec2,並且 truffle 開發實例正在執行。從本地truffle develop控制台,我已將我的合約部署到該遠端網路(使用truffle migrate --compile-all --reset --network remote_network_name)。合約部署成功,我有一個儲存合約的地址。

truffle develop遠端伺服器上的控制台中,我嘗試Contract_Name.deployed().then(function(instance) {app = instance; })獲取實例,但出現Contract_Name is undefined錯誤。

truffle develop遠端伺服器上的控制台,有沒有辦法從合約的地址獲取合約實例?

也許像MyContract = new Contract.at("ContractAddress")什麼?

使用松露時有一種更簡單的方法。

首先包括合約工件,與在 truffle 中創建新合約時相同。

讓 MyContract = artifacts.require("./MyContract.sol");

然後在腳本中:

let myContract = await MyContract.at(‘我的合約地址’);

這樣就不需要從另一個文件等中獲取 ABI。

就個人而言,在 Truffle 中,我傾向於不必知道或不需要我部署的合約的地址來獲取它的實例。您可能不記得您的合約地址,或者該地址已深埋在終端內,因為新內容會將舊內容推向更高的位置。

在不知道合約地址的情況下獲取已部署的合約實例的方法是使用合約的deployed()方法:

const deployedContractInstance = await MyContract.deployed()

就是這樣!

您現在可以訪問合約公開的所有屬性和方法,例如,您可以通過簡單地執行deployedContractInstance.address.

引用自:https://ethereum.stackexchange.com/questions/45305