Web3js

如何從外部使用 ABIEncoderV2 將結構作為函式參數傳遞?

  • May 28, 2019

有這個程式碼:

struct UserScore {
   address user;
   uint score;
   uint time;
}
function getWithStruct(UserScore _user) public view returns (address, uint, uint) {
   return (_user.user, _user.score, _user.time);
}

metamask 目前似乎不支持此功能。但是有解決方法嗎?對我來說,使用 metamask 的使用者可以將簽名數據以結構的形式傳輸是必要的。我能為它做些什麼?

您可以簡單地通過使用映射來存檔它,並從結構映射值返回,這樣不需要 ABIEncoderV2 :

程式碼:

struct UserScore {
   address user;
   uint score;
   uint time;
}
mapping(address=>UserScore) public userscore;

function addUserScore(address _user, uint _score, uint _time)public returns (bool success){
   userscore[msg.sender] = UserScore(_user,_score,_time);
   return true;
}
function getWithStruct(address _userAdress) public view returns (address, uint, uint) {
   return (userscore[_userAdress].user, userscore[_userAdress].score, userscore[_userAdress].time);
}

希望這會幫助你。

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