What node/network and node version are you using?
Can you provide a minimal example that triggers this issue, ideally on TestNet with a hard-coded mnemonic just used for that purpose?
This is my code, i’m using Purestake API for interaction with Algorand blockchain on testnet v1.0
and the error occur into the “submitTransaction” function…the raw response is null and the error message is {“message”:“At least one signature didn’t pass verification”}
public static AlgodClient client = null;
public static void createAsset() throws Exception {
final String account1_mnemonic = "pink will job decide budget aisle jungle predict recall differ trigger ill time hen night cereal glad rebuild session skill mind nest track absent more";
if (client == null)
client = connectToNetwork();
Account acct1 = new Account(account1_mnemonic);
TransactionParametersResponse params = client.TransactionParams().execute().body();
params.fee = (long) 0;
System.out.println(UpdateAccount(acct1));
// Create the Asset:
BigInteger assetTotal = BigInteger.valueOf(1);
boolean defaultFrozen = false;
String unitName = "YAT";
String url = "http://this.test.it";
String assetMetadataHash = "";
Address manager = acct1.getAddress();
Address reserve = acct1.getAddress();
Address freeze = acct1.getAddress();
Address clawback = acct1.getAddress();
Integer decimals = 0;
for(int i = 95; i < 900; i++) {
String assetName = "Asset_".concat(Integer.toString(i));
Transaction tx = Transaction.AssetCreateTransactionBuilder().sender(acct1.getAddress()).assetTotal(assetTotal)
.assetDecimals(decimals).assetUnitName(unitName).assetName(assetName).url(url)
.metadataHashUTF8(assetMetadataHash).manager(manager).reserve(reserve).freeze(freeze)
.defaultFrozen(defaultFrozen).clawback(clawback).suggestedParams(params).build();
//SignedTransaction signedTx = acct1.signTransaction(tx);
Long assetID = null;
try {
String id = submitTransaction(acct1.signTransaction(tx));
System.out.println("Transaction ID: " + id);
waitForConfirmation(id);
// Read the transaction
PendingTransactionResponse pTrx = client.PendingTransactionInformation(id).execute().body();
// Now that the transaction is confirmed we can get the assetID
assetID = pTrx.assetIndex;
System.out.println("AssetID = " + assetID);
if(UpdateAccount(acct1)) {
System.out.println("");
}
} catch (Exception e) {
e.printStackTrace();
return;
}
}
}
public static String submitTransaction(SignedTransaction signedTx) throws Exception {
try {
String[] txHeaders = {"Content-Type"};
String[] txValues = {"application/x-binary"};
byte[] encodedTxBytes = Encoder.encodeToMsgPack(signedTx);
Response < PostTransactionsResponse > rawtxresponse = client.RawTransaction().rawtxn(encodedTxBytes).execute(txHeaders, txValues);
if (!rawtxresponse.isSuccessful()) {
throw new Exception(rawtxresponse.message());
}
String id = rawtxresponse.body().txId;
System.out.println("Successfully sent tx with ID: " + id);
//PostTransactionsResponse txResponse = client.RawTransaction().rawtxn(encodedTxBytes).execute(txHeaders, txValues).body();
//System.out.println("Transaction ID: " + txResponse.txId);
return (id);
} catch (ApiException e) {
throw (e);
}
}