Solidity

可靠的地址(此)返回錯誤的合約地址

  • June 10, 2020

這是我在松露中使用的cantract程式碼

pragma solidity 0.5.16;

contract Test {
   function getAdd() public view returns(address){
       address add = address(this);
       return add;
   }
}

這是我的 js 測試程式碼

const Test = artifacts.require('../contracts/Test.sol');

contract('Test',(accounts)=>{

   it('Testing Testing',async()=>{
       let ins =await Test.deployed();
       let ans =await ins.getAdd.call();
       console.log(ans)
   })
})

我正在為我的本地區塊鏈使用 ganache

當我執行 truffle test 命令時,它給了我結果 0x4cB6949669C8631fb2f99Bbe890B99B7DbF64685

但在 ganache 合約部分,部署的合約地址是 0xc48Cda939749b1Da32E6853184D595a30c5accCf

我不知道這裡出了什麼問題,因為 address(this) 應該返回我的契約地址,但它沒有按預期工作

我已經完成的步驟是: -

  1. 松露初始化
  2. 寫了契約
  3. 編寫遷移文件

const Test = artifacts.require(“Test”);

module.exports = function(deployer) { deployer.deploy(Test); };

truffle compile 5. truffle 遷移 6. truffle 測試

我不知道為什麼我得到錯誤的地址但是當我在混音上嘗試它時它正在工作請幫忙!

我想如果你

console.log(ins.address, ans);

…你會發現它們是一樣的。

如果是這樣,問題是混淆了deployed()正在使用的合約實例。它是該網路上部署者知道的最新資訊,但不一定是您所期望的。它隨每個deployer.deploy().

希望能幫助到你。

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