xyrho12353
12개월 전 질문함  12 카르마
web3js로 함수 실행 시, return 부분 질문입니다.

현재 스터디로 erc-721 크립토키티 코드를 뜯어보면서 dapp 만들어보고 있는데, web3js 쪽에서 함수를 실행해서 return 값 받아올 때 조금 의문이 들어 질문을 남깁니다.

function ABCDE(address _owner) external view returns(uint256[] ownerTokens){
    uint256 tokenCount = balanceOf(_owner);
    uint256[] memory result = new uint256[](tokenCount);
    // result 에 _owner와 주소가 같은 것을 담아서 반환합니다.
    // ...
    // ...

    return result;
}

그런데, remix에서 실행하면,

0: uint256[]: ABCDE 1,0

라고 나오는데, 실제 web3js에서 불러오면,

var myWeb3 = new Web3(window.web3.currentProvider);
var contractAddress = "";
var abi = [];
var message;

// 특정 이더리움 주소값
var getAddress = "";

message = myWeb3.eth.contract(abi).at(contractAddress);
message.ABCDE(getAddress, function (err,res) {
    console.log(res);
});

실행시키면 [] 으로 나오는데, web3js 에서 어떻게 불러와야하는건가요? ㅠㅠ

ko
#web3
#ethereum
#erc721
#Metamask
xyrho12353
12개월 전 질문함  12 카르마
web3js로 함수 실행 시, return 부분 질문입니다.

현재 스터디로 erc-721 크립토키티 코드를 뜯어보면서 dapp 만들어보고 있는데, web3js 쪽에서 함수를 실행해서 return 값 받아올 때 조금 의문이 들어 질문을 남깁니다.

function ABCDE(address _owner) external view returns(uint256[] ownerTokens){
    uint256 tokenCount = balanceOf(_owner);
    uint256[] memory result = new uint256[](tokenCount);
    // result 에 _owner와 주소가 같은 것을 담아서 반환합니다.
    // ...
    // ...

    return result;
}

그런데, remix에서 실행하면,

0: uint256[]: ABCDE 1,0

라고 나오는데, 실제 web3js에서 불러오면,

var myWeb3 = new Web3(window.web3.currentProvider);
var contractAddress = "";
var abi = [];
var message;

// 특정 이더리움 주소값
var getAddress = "";

message = myWeb3.eth.contract(abi).at(contractAddress);
message.ABCDE(getAddress, function (err,res) {
    console.log(res);
});

실행시키면 [] 으로 나오는데, web3js 에서 어떻게 불러와야하는건가요? ㅠㅠ

ko
#web3
#ethereum
#erc721
#Metamask

답변 1개
ksjksj0122
12개월 전 답변함 527 카르마

작성하신 Web3 코드는 안정성을 위해 전체적으로 추가해야 할 것들이 있어보이긴 하지만,
어쨌든 컨트랙트를 올리고 값을 확인해본 결과 함수 호출 후 값은 잘 나오는 것 같습니다 ;

스크린샷 20180725 오전 12.53.42.png

혹시 웹 서버를 돌리지 않고, 로컬에서 html 파일을 열어서 실행하신 것은 아닐까요?
메타마스크를 사용하시려면 웹 서버에서 해당 스크립트를 실행해야 합니다.
즉, http://127.0.0.1/file.html 등으로 접근하여 실행해야 결과가 나옵니다.

웹 서버를 실행한 상태셨다면 다시 한번 알려주세요!

작성하신 Web3 코드는 안정성을 위해 전체적으로 추가해야 할 것들이 있어보이긴 하지만,
어쨌든 컨트랙트를 올리고 값을 확인해본 결과 함수 호출 후 값은 잘 나오는 것 같습니다 ;

스크린샷 20180725 오전 12.53.42.png

혹시 웹 서버를 돌리지 않고, 로컬에서 html 파일을 열어서 실행하신 것은 아닐까요?
메타마스크를 사용하시려면 웹 서버에서 해당 스크립트를 실행해야 합니다.
즉, http://127.0.0.1/file.html 등으로 접근하여 실행해야 결과가 나옵니다.

웹 서버를 실행한 상태셨다면 다시 한번 알려주세요!

xyrho12353

서버는 django 에서 돌리고 있고, 웹쪽은 됩니다만, 크립토 키티코드에서 가져온거라;;; 현재는 ropsten 테스트넷에서 해보고 있긴합니다;; 원래는 가네쉬에서 하다가 메타마스크로 돌려보고 싶은 나머지....

Jul 24 '18 at 5:05 pm
ksjksj0122

크 컨트랙트 주소를 잘못 쓰셔서 그랬던 것으로 확인...! ㅎㅎㅎ 앞으로도 질문 있으시면 언제든 알려주세요 :)

Jul 25 '18 at 2:14 am
xyrho12353

코드상 문제가 아닌, 컨트렉트 주소를 잘 못 입력한 저의 무지로 인해 발생하였습니다....ㅠㅠ

Jul 25 '18 at 2:15 am
coinmon300

흥미진진하게 보다게 훈훈한 댓글로 순간 마무리 되는군요. 모든것이 해결되는 델리게이트 콜입니다. 강추

Jul 26 '18 at 1:41 pm
Earn tokens by posting and answering questions about blockchain!
Karma to eth
답변하기