Я сделал свой код солидности и хочу преобразовать его в Java, поэтому я использую команду solc
solc ERC721.sol --bin --abi --optimize -o C:\Users\user\Desktop
, но я получил это предупреждение Experimental features are turned on. Do not use experimental features on live deployments.
, и когда яиспользуйте команду web3
web3j solidity generate -b C:\Users\user\Desktop\ERC721.bin -a C:\Users\user\Desktop\ERC721.abi -o C:\Users\user\Desktop -p com.contract
Я получил это сообщение об ошибке Generating com.contract.Land ... Unsupported type encountered: tuple
Я использую ABIEncoderV2 в своем коде, и это мой код:
pragma solidity >=0.4.22 <0.6.0;
pragma experimental ABIEncoderV2;
contract land{
address public owner;
constructor() public{
owner = msg.sender;
}
struct Landpaper{
string number;
string landaddress;
string landnumber;
string landarea;
string holdpoints;
}
mapping(string => Landpaper) lp;
modifier Permission(){
require(msg.sender == owner);
_;
}
function set(string memory rfidnumber, Landpaper memory _landpaperRecord) public Permission{
lp[rfidnumber]=_landpaperRecord;
}
function get(string memory rfidnumber) view public returns(Landpaper memory){
return lp[rfidnumber];
}
}
ИтакКак я могу сделать, чтобы решить эту проблему? Только не используйте ABIv2?
это мой новый код:
pragma solidity >=0.4.22 <0.6.0;
//pragma experimental ABIEncoderV2;
contract land{
address public owner;
constructor() public{
owner = msg.sender;
}
struct Landpaper{
string number;
string landaddress;
string landnumber;
string landarea;
string holdpoints;
}
mapping(string => Landpaper) lp;
modifier Permission(){
require(msg.sender == owner);
_;
}
function set(string memory rfidnumber, string memory _number, string memory _landaddress, string memory _landnumber, string memory _landarea, string memory _holdpoints) public Permission{
lp[rfidnumber] = Landpaper({
number : _number,
landaddress : _landaddress,
landnumber : _landnumber,
landarea : _landarea,
holdpoints : _holdpoints
});
}
function get(string memory rfidnumber)
public
view returns (string memory number, string memory landaddress, string memory landnumber, string memory landarea, string memory holdpoints)
{
Landpaper memory p = lp[rfidnumber];
return (p.number, p.landaddress, p.landnumber, p.landarea, p.holdpoints);
}
}
Я сделал другую версию, чтобы исправить свой код без использования ABIv2, но я хочу знать, этоесть ли способ решить эту проблему?