>

트뤼플을 사용하여 계약을 테스트하는 데 문제가 있습니다. TestRPC와 함께 최신 버전의 트러플이 설치되어 있습니다.

최신 버전의 트러플에는 SmartContracts를 테스트 할 수있는 클라이언트가 제공되므로 TestRPC가 더 이상 필요하지 않습니다.

내 마이그레이션이 다음과 같은 간단한 계약서를 가지고 있습니다 :

var Migrations = artifacts.require("./Migrations.sol");
var OrdersFacilitator = artifacts.require("./OrdersFacilitator.sol")
module.exports = function(deployer) {
  deployer.deploy(Migrations);
  deployer.deploy(OrdersFacilitator);
};

트뤼플 개발을 실행하면 10 개의 테스트 계정이 생성됩니다.

Accounts:

(0) 0x627306090abab3a6e1400e9345bc60c78a8bef57

(1) 0xf17f52151ebef6c7334fad080c5704d77216b732 //...

Truffle js는 다음과 같이 구성되어 있습니다 :

networks: {
  development: {
    host: "localhost",
    port: 9545,
    network_id: "*"
  }
}

계약 이름을 실행하면 다음 정보가 포함 된 계약을 볼 수 있습니다.

//...
class_defaults:
{ from: '0x627306090abab3a6e1400e9345bc60c78a8bef57',
 gas: 6721975,
 gasPrice: 100000000000 },
currentProvider:
 HttpProvider {
   host: 'http://127.0.0.1:9545/',
   timeout: 0,
   user: undefined,
   password: undefined,
   headers: undefined,
   send: [Function],
   sendAsync: [Function],
   _alreadyWrapped: true },
network_id: '4447' }

네트워크 ID와 포트가 구성과 잘 일치하는 것 같습니다. 계약 이름을 입력하면 정보를 볼 수 있지만 액세스하려고하면

var facilitator;
OrdersFacilitator.deployed().then(x => facilitator = x);

오류가 발생합니다 :

OrdersFacilitator has not been deployed to detected network (network/artifact mismatch)

빌드 폴더를 삭제하고 --reset 플래그를 사용하여 모두 마이그레이션하려고 시도했지만 작동하지 않는 것 같습니다. 배포 된 계약을 테스트하는 방법

  • 답변 # 1

    Truffle 프로젝트와 동일한 문제를 시도하는 데 비슷한 문제가 있습니다. 해결책은 프로젝트를 캐시되지 않은 상태로 재설정하는 것일 수 있습니다.

    --reset 플래그를 사용하여 트뤼플 컴파일 (및/또는 트뤼플 마이그레이션)을 실행할 수 있습니다. 이것은 build 를 제거합니다  dir하고 모든 것을 다시 컴파일하십시오.

  • 답변 # 2

    문제를 해결하기 위해 네트워크 옵션과 네트워크 ID를 명시 적으로 설정했습니다.

    //Start Test RPC with an Explicit Network
    testrpc --network-id 1337
    
    

    그런 다음 TestRPC를위한 명시 적 네트워크를 만들었습니다 :

    networks: {
      testrpc:{
        host: "localhost",
        port: 8545,
        network_id: "1337"
      }
    }
    
    

    이제 새 네트워크로 명시 적으로 마이그레이션 할 때 :

    truffle migrate --network testrpc --reset
    truffle console --network testrpc
    
    

    이것은 올바른 네트워크에 올바르게 매핑 된 것 같습니다

관련 자료

  • 이전 node.js - iconv-lite는 적절한 디코딩을 사용하고 있지만 모든 것을 올바르게 디코딩하지 못합니다
  • 다음 shell - 특정 명령에 대해서만 도커 진입 점을 비 루트로 실행하는 방법