FISCO-BCOS / FISCO-BCOS/console

sol2java.sh 生成java代码编译报错

Open
#622 1 comment 0 reactions 0 assignees View on GitHub
2.9.0 resolved
Dominant language
Shell
Stars
96
Forks
62
PR merge metrics
No merged PRs in 30d

Description

原始合约:
```shell
pragma solidity ^0.4.25;

contract OneToOne {
function updateInfo(uint256 assetId, string memory info) public{
}
}
```

使用`sol2java.sh`工具:
```shell
bash sol2java.sh
```

最终生成的代码:
```java
package com;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Uint256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple2;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class OneToOne extends Contract {
public static final String[] BINARY_ARRAY = {"608060405234801561001057600080fd5b5060e48061001f6000396000f300608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806350c00197146044575b600080fd5b348015604f57600080fd5b5060b260048036038101908080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505060b4565b005b50505600a165627a7a72305820e8891134ccea817cb561032019a44ab13ec3f8e69e001ab6d8859c4771d455fa0029"};

public static final String BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

public static final String[] SM_BINARY_ARRAY = {"608060405234801561001057600080fd5b5060e48061001f6000396000f300608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680635549e5a6146044575b600080fd5b348015604f57600080fd5b5060b260048036038101908080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505060b4565b005b50505600a165627a7a72305820d16533d3155da9786804cc043dffad773fce02adf9ca96e6ff720f91e7d41efb0029"};

public static final String SM_BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

public static final String[] ABI_ARRAY = {"[{\"constant\":false,\"inputs\":[{\"name\":\"assetId\",\"type\":\"uint256\"},{\"name\":\"info\",\"type\":\"string\"}],\"name\":\"updateInfo\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"};

public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

public static final String FUNC_UPDATEINFO = "updateInfo";

protected OneToOne(String contractAddress, Client client, CryptoKeyPair credential) {
super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
}

public static String getBinary(CryptoSuite cryptoSuite) {
return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
}

public TransactionReceipt updateInfo(BigInteger assetId, BigInteger info) {
final Function function = new Function(
FUNC_UPDATEINFO,
Arrays.asList(new org.fisco.bcos.sdk.abi.datatypes.generated.Uint256(assetId),
new org.fisco.bcos.sdk.abi.datatypes.Utf8String(info)),
Collections.>emptyList());
return executeTransaction(function);
}

public byte[] updateInfo(BigInteger assetId, BigInteger info, TransactionCallback callback) {
final Function function = new Function(
FUNC_UPDATEINFO,
Arrays.asList(new org.fisco.bcos.sdk.abi.datatypes.generated.Uint256(assetId),
new org.fisco.bcos.sdk.abi.datatypes.Utf8String(info)),
Collections.>emptyList());
return asyncExecuteTransaction(function, callback);
}

public String getSignedTransactionForUpdateInfo(BigInteger assetId, BigInteger info) {
final Function function = new Function(
FUNC_UPDATEINFO,
Arrays.asList(new org.fisco.bcos.sdk.abi.datatypes.generated.Uint256(assetId),
new org.fisco.bcos.sdk.abi.datatypes.Utf8String(info)),
Collections.>emptyList());
return createSignedTransaction(function);
}

public Tuple2 getUpdateInfoInput(TransactionReceipt transactionReceipt) {
String data = transactionReceipt.getInput().substring(10);
final Function function = new Function(FUNC_UPDATEINFO,
Arrays.asList(),
Arrays.>asList(new TypeReference() {}, new TypeReference() {}));
List results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
return new Tuple2(

(BigInteger) results.get(0).getValue(),
(String) results.get(1).getValue()
);
}

public static OneToOne load(String contractAddress, Client client, CryptoKeyPair credential) {
return new OneToOne(contractAddress, client, credential);
}

public static OneToOne deploy(Client client, CryptoKeyPair credential) throws ContractException {
return deploy(OneToOne.class, client, credential, getBinary(client.getCryptoSuite()), "");
}
}
```

![image](https://user-images.githubusercontent.com/13342660/170651022-2bbe7fea-77ea-4669-9bbb-c645dcf7736f.png)

生成的`updateInfo`接口数据类型不一致,经测试2.8.0 console没有这个问题,是2.9.0 console新引入的问题。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.