web3j:智能合约写操作时总是抛出java.lang.ArrayIndexOutOfBoundsException错误,不知道什么问题。
我的代码如下:
String hexPrivateKey = String.format("%040x", new BigInteger(1, Config.privateKey.getBytes()));
String hexPublicKey = String.format("%040x", new BigInteger(1, Config.publicKey.getBytes()));
Credentials credentials = Credentials.create(hexPrivateKey, hexPublicKey);
DataSaver contract = DataSaver.load(
address, web3j, credentials, Contract.GAS_PRICE, Contract.GAS_LIMIT);
RemoteCall transaction2 = contract.updateDocumentPayload(
BigInteger.valueOf(1), "Test");
transaction2.send();
读取操作是成功的。写入返回以下错误:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.bouncycastle.crypto.signers.HMacDSAKCalculator.init(Unknown Source)
at org.bouncycastle.crypto.signers.ECDSASigner.generateSignature(Unknown Source)
at org.web3j.crypto.ECKeyPair.sign(ECKeyPair.java:46)
at org.web3j.crypto.Sign.signMessage(Sign.java:52)
at org.web3j.crypto.Sign.signMessage(Sign.java:40)
at org.web3j.crypto.TransactionEncoder.signMessage(TransactionEncoder.java:21)
at org.web3j.tx.RawTransactionManager.signAndSend(RawTransactionManager.java:102)
at org.web3j.tx.RawTransactionManager.sendTransaction(RawTransactionManager.java:91)
at org.web3j.tx.TransactionManager.executeTransaction(TransactionManager.java:49)
at org.web3j.tx.ManagedTransaction.send(ManagedTransaction.java:83)
at org.web3j.tx.Contract.executeTransaction(Contract.java:242)
at org.web3j

在使用web3j进行以太坊智能合约写操作时遇到`ArrayIndexOutOfBoundsException`错误。问题源于使用了无效的私钥签署交易。确保私钥和地址的有效性,参考以太坊常见问题和错误进行排查。此外,推荐了针对不同编程语言的以太坊开发教程。
最低0.47元/天 解锁文章

940

被折叠的 条评论
为什么被折叠?



