2017-04-24 11 views
1

Maker 계약에서 Taker 계약의 새 인스턴스를 만들고 값을 보내려고합니다.다른 계약의 함수 호출하기 견고 함

그런 다음 나중에 나는 "변화"라는 기능을 발견하고 오류가 발생 할 수 그러나 테이커 계약

maker.change.value(5)(y); 

에서 메이커 계약에 다시 값을 전송하고 싶습니다. 생각할 수있는 유일한 설명은 비동기 적으로 실행해야하지만 동시에 컴파일됩니다.

Untitled:27:3: Error: Member "change" not found or not visible after argument-dependent lookup in address 
    maker.change.value(5)(y); 
    ^----------^ 

(이 브라우저 견고성, 에테 리움 스튜디오와 트러플에 테스트 - 같은 오류 메시지가 모든)

다음은 전체 코드입니다.

이 문제를 해결하는 방법에 대한 조언이 있으면 매우 감사 할 것입니다.

감사합니다.

pragma solidity ^0.4.2; 

contract Maker { 
uint x; 

function Maker() { 
    x = 5; 
    Taker take = new Taker(this, 2); 
    bool a = take.call.gas(200000).value(10)(); 
} 

function change(uint val) external payable { 
    x = val; 
} 
} 

contract Taker { 
uint y; 
address maker; 

function Taker(address makerAddr, uint val) { 
    y = val; 
    maker = makerAddr; 
} 

function sendChange() { 
    maker.change.value(5)(y); 
} 
} 

답변

1

이 코드는

pragma solidity ^0.4.2; 
contract Maker { 
uint x; 

function Maker() { 
    x = 5; 
    Taker take = new Taker(this, 2); 
    bool a = take.call.gas(200000).value(10)(); 
} 

function change(uint val) external { 
    x = val; 
} 
} 

contract Taker { 
    uint y; 
    Maker maker; 

    function Taker(address makerAddr, uint val) { 
     y = val; 
     maker = Maker(makerAddr); 
} 

function sendChange() { 
    maker.change(5); 
} 
} 
견고

브라우저에서 저와 함께 일했다