client-sdk-java icon indicating copy to clipboard operation
client-sdk-java copied to clipboard

Java-sdk部署合约报错:Unsupported type encountered: tuple

Open shadow-001 opened this issue 3 years ago • 6 comments

sdk: //platon compile "com.platon.sdk:core:0.15.1.10" compile "com.platon.sdk:console:0.15.1.10"

执行部署合约,报错: image

shadow-001 avatar Jul 14 '21 13:07 shadow-001

是在部署合约的时候还是执行合约方法的时候报错,可以提供更多的堆栈信息吗

liushuyu1 avatar Aug 03 '21 06:08 liushuyu1

是在部署合约的时候还是执行合约方法的时候报错,可以提供更多的堆栈信息吗

上面描述有问题,是将abi 和 bin 文件转成java文件的时候报错。 abi中有类型tuple, 调用该方法报错 SolidityFunctionWrapperGenerator.run(params); image

后面我使用了下面这个方法执行成功了(参数需要做一些改变): SolidityFunctionWrapperGenerator.main(params);

shadow-001 avatar Aug 03 '21 09:08 shadow-001

你好,能提供下abi和bin文件吗?方便我们重现一下问题,谢谢

liushuyu1 avatar Aug 04 '21 06:08 liushuyu1

你好,能提供下abi和bin文件吗?方便我们重现一下问题,谢谢 abi: [ { "inputs": [ { "components": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "bytes", "name": "callData", "type": "bytes" } ], "internalType": "struct Multicall.Call[]", "name": "calls", "type": "tuple[]" } ], "name": "aggregate", "outputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" }, { "internalType": "bytes[]", "name": "returnData", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getBlockHash", "outputs": [ { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentBlockCoinbase", "outputs": [ { "internalType": "address", "name": "coinbase", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentBlockDifficulty", "outputs": [ { "internalType": "uint256", "name": "difficulty", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentBlockGasLimit", "outputs": [ { "internalType": "uint256", "name": "gaslimit", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCurrentBlockTimestamp", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "getEthBalance", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLastBlockHash", "outputs": [ { "internalType": "bytes32", "name": "blockHash", "type": "bytes32" } ], "stateMutability": "view", "type": "function" } ]

bin: 6080604052600380546001600160a01b031916331790553480156200002357600080fd5b5060408051808201909152600b8082526a26bab63a34a1b0b63632b960a91b60209092019182526200005891600491620000b8565b50604080518082019091526003808252624d4b4360e81b60209092019182526200008591600591620000b8565b506a35c4490f820855e100000060028190556003546001600160a01b03166000908152602081905260409020556200019b565b828054620000c6906200015e565b90600052602060002090601f016020900481019282620000ea576000855562000135565b82601f106200010557805160ff191683800117855562000135565b8280016001018555821562000135579182015b828111156200013557825182559160200191906001019062000118565b506200014392915062000147565b5090565b5b8082111562000143576000815560010162000148565b6002810460018216806200017357607f821691505b602082108114156200019557634e487b7160e01b600052602260045260246000fd5b50919050565b61127680620001ab6000396000f3fe6080604052600436106101025760003560e01c80634e6ec2471161009557806395d89b411161006457806395d89b41146102bc578063a457c2d7146102d1578063a9059cbb146102f1578063dc39d06d14610311578063dd62ed3e1461033157610109565b80634e6ec247146102385780636161eb181461025a57806370a082311461027a5780638da5cb5b1461029a57610109565b8063313ce567116100d1578063313ce567146101a857806339509351146101ca5780633b72ab91146101ea5780634782f7791461021857610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd1461016657806323b872dd1461018857610109565b3661010957005b600080fd5b34801561011a57600080fd5b50610123610351565b6040516101309190610e72565b60405180910390f35b34801561014557600080fd5b50610159610154366004610c95565b6103e3565b6040516101309190610e67565b34801561017257600080fd5b5061017b610400565b6040516101309190611160565b34801561019457600080fd5b506101596101a3366004610c55565b610406565b3480156101b457600080fd5b506101bd6104a6565b6040516101309190611169565b3480156101d657600080fd5b506101596101e5366004610c95565b6104ab565b3480156101f657600080fd5b5061020a610205366004610ca7565b6104fa565b604051610130929190610de4565b34801561022457600080fd5b50610159610233366004610bf2565b610651565b34801561024457600080fd5b50610258610253366004610c95565b6106ab565b005b34801561026657600080fd5b50610258610275366004610c95565b610785565b34801561028657600080fd5b5061017b610295366004610bd6565b610878565b3480156102a657600080fd5b506102af610897565b6040516101309190610db7565b3480156102c857600080fd5b506101236108a6565b3480156102dd57600080fd5b506101596102ec366004610c95565b6108b5565b3480156102fd57600080fd5b5061015961030c366004610c95565b610926565b34801561031d57600080fd5b5061015961032c366004610c95565b61093a565b34801561033d57600080fd5b5061017b61034c366004610c1d565b6109c8565b606060048054610360906111a6565b80601f016020809104026020016040519081016040528092919081815260200182805461038c906111a6565b80156103d95780601f106103ae576101008083540402835291602001916103d9565b820191906000526020600020905b8154815290600101906020018083116103bc57829003601f168201915b5050505050905090565b60006103f76103f06109f3565b84846109f7565b50600192915050565b60025490565b6000610413848484610a9e565b6001600160a01b0384166000908152600160205260408120816104346109f3565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050828110156104805760405162461bcd60e51b815260040161047790610fd2565b60405180910390fd5b61049b8561048c6109f3565b610496868561118f565b6109f7565b506001949350505050565b601290565b60006103f76104b86109f3565b8484600160006104c66109f3565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546104969190611177565b60608060005b845181116106495784818151811061052857634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166370a08231856040518263ffffffff1660e01b815260040161055b9190610db7565b60206040518083038186803b15801561057357600080fd5b505afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190610d9f565b8382815181106105cb57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508481815181106105f757634e487b7160e01b600052603260045260246000fd5b602002602001015182828151811061061f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039092166020928302919091019091015280610641816111e1565b915050610500565b509250929050565b6003546000906001600160a01b0316331461066b57600080fd5b6040516001600160a01b0384169083156108fc029084906000818181858888f193505050501580156106a1573d6000803e3d6000fd5b5060019392505050565b6001600160a01b0382166106d15760405162461bcd60e51b815260040161047790611129565b6003546001600160a01b038381169116146106eb57600080fd5b6106f760008383610bc6565b80600260008282546107099190611177565b90915550506001600160a01b03821660009081526020819052604081208054839290610736908490611177565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610779908590611160565b60405180910390a35050565b6001600160a01b0382166107ab5760405162461bcd60e51b81526004016104779061101a565b6107b782600083610bc6565b6001600160a01b038216600090815260208190526040902054818110156107f05760405162461bcd60e51b815260040161047790610f08565b6107fa828261118f565b6001600160a01b0384166000908152602081905260408120919091556002805484929061082890849061118f565b90915550506040516000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061086b908690611160565b60405180910390a3505050565b6001600160a01b0381166000908152602081905260409020545b919050565b6003546001600160a01b031681565b606060058054610360906111a6565b600080600160006108c46109f3565b6001600160a01b03908116825260208083019390935260409182016000908120918816815292529020549050828110156109105760405162461bcd60e51b8152600401610477906110e4565b6106a161091b6109f3565b85610496868561118f565b60006103f76109336109f3565b8484610a9e565b60035460405163a9059cbb60e01b81526000916001600160a01b038086169263a9059cbb9261096f9216908690600401610dcb565b602060405180830381600087803b15801561098957600080fd5b505af115801561099d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c19190610d7f565b9392505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b038316610a1d5760405162461bcd60e51b8152600401610477906110a0565b6001600160a01b038216610a435760405162461bcd60e51b815260040161047790610f4a565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061086b908590611160565b6001600160a01b038316610ac45760405162461bcd60e51b81526004016104779061105b565b6001600160a01b038216610aea5760405162461bcd60e51b815260040161047790610ec5565b610af5838383610bc6565b6001600160a01b03831660009081526020819052604090205481811015610b2e5760405162461bcd60e51b815260040161047790610f8c565b610b38828261118f565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290610b6e908490611177565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bb89190611160565b60405180910390a350505050565b505050565b803561089281611228565b600060208284031215610be7578081fd5b81356109c181611228565b60008060408385031215610c04578081fd5b8235610c0f81611228565b946020939093013593505050565b60008060408385031215610c2f578182fd5b8235610c3a81611228565b91506020830135610c4a81611228565b809150509250929050565b600080600060608486031215610c69578081fd5b8335610c7481611228565b92506020840135610c8481611228565b929592945050506040919091013590565b60008060408385031215610c04578182fd5b60008060408385031215610cb9578182fd5b823567ffffffffffffffff80821115610cd0578384fd5b818501915085601f830112610ce3578384fd5b8135602082821115610cf757610cf7611212565b808202604051601f19603f83011681018181108682111715610d1b57610d1b611212565b604052838152828101945085830182870184018b1015610d39578889fd5b8896505b84871015610d6257610d4e81610bcb565b865260019690960195948301948301610d3d565b509650610d729050878201610bcb565b9450505050509250929050565b600060208284031215610d90578081fd5b815180151581146109c1578182fd5b600060208284031215610db0578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b82811015610e1d57815184529284019290840190600101610e01565b50505083810382850152845180825285830191830190845b81811015610e5a5783516001600160a01b031683529284019291840191600101610e35565b5090979650505050505050565b901515815260200190565b6000602080835283518082850152825b81811015610e9e57858101830151858201604001528201610e82565b81811115610eaf5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b60ff91909116815260200190565b6000821982111561118a5761118a6111fc565b500190565b6000828210156111a1576111a16111fc565b500390565b6002810460018216806111ba57607f821691505b602082108114156111db57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156111f5576111f56111fc565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461123d57600080fd5b5056fea2646970667358221220602d49d2548e85899eaad0704f3d5dfc01e55d70298b2d8898fce8c5e347992464736f6c63430008010033

合约源文件: `/** *Submitted for verification at Etherscan.io on 2019-06-10 */

pragma solidity >=0.5.0; pragma experimental ABIEncoderV2;

/// @title Multicall - Aggregate results from multiple read-only function calls /// @author Michael Elliot [email protected] /// @author Joshua Levine [email protected] /// @author Nick Johnson [email protected]

contract Multicall { struct Call { address target; bytes callData; } function aggregate(Call[] memory calls) public returns (uint256 blockNumber, bytes[] memory returnData) { blockNumber = block.number; returnData = new bytes; for(uint256 i = 0; i < calls.length; i++) { (bool success, bytes memory ret) = calls[i].target.call(calls[i].callData); require(success); returnData[i] = ret; } } // Helper functions function getEthBalance(address addr) public view returns (uint256 balance) { balance = addr.balance; } function getBlockHash(uint256 blockNumber) public view returns (bytes32 blockHash) { blockHash = blockhash(blockNumber); } function getLastBlockHash() public view returns (bytes32 blockHash) { blockHash = blockhash(block.number - 1); } function getCurrentBlockTimestamp() public view returns (uint256 timestamp) { timestamp = block.timestamp; } function getCurrentBlockDifficulty() public view returns (uint256 difficulty) { difficulty = block.difficulty; } function getCurrentBlockGasLimit() public view returns (uint256 gaslimit) { gaslimit = block.gaslimit; } function getCurrentBlockCoinbase() public view returns (address coinbase) { coinbase = block.coinbase; } }`

shadow-001 avatar Aug 04 '21 07:08 shadow-001

@liushuyu1

biganxin avatar Aug 10 '21 04:08 biganxin

@liushuyu1

zhouxi-jzheng avatar Dec 31 '21 09:12 zhouxi-jzheng