TransactionManager sign을 할때 null point exception이 뜹니다

안녕하세요 다른 프로젝트에서 사용하는 코드인데 새로운 프로젝트와 새로운 스마트 컨트랙트 상에서 에러가 나서 문의 드립니다.

SmartContractExecutionTransaction smartContractExecutionTransaction = SmartContractExecutionTransaction.create(
senderPublicKey, transactionSmartContractAddress, BigInteger.ZERO,
Numeric.hexStringToByteArray(encodeData),
new DefaultGasProvider().getGasLimit(Transaction.FUNC_INSERTPRODUCT));

	TransactionManager transactionManager = new TransactionManager.Builder(caver, sender).setChaindId(ChainId.MAINNET).build();

	String senderRawTransaction = transactionManager.sign(smartContractExecutionTransaction, true).getValueAsString();

위 코드에서 transaction manager가 sign을 할때 null point exception이 뜹니다. transaction manager와 smartContractExecuetionTransaction은 잘 불러오는거 확인 했습니다.
더 디테일한 정보가 필요할건 같은데 혹시 support 해주실수 있으신지 궁금합니다. 감사합니다.

String senderRawTransaction = transactionManager.sign(smartContractExecutionTransaction, true).getValueAsString();

안녕하세요. 일단 알려주신 코드를 바탕으로 살펴보면,

SmartContractExecutionTransaction instance를 생성하는 SmartContractExecutionTransaction.create()의 첫번째 파라미터가 잘못된 것 같습니다. 첫번째 파라미터는 'sender’의 public key를 넣는 것이 아니라, sender의 address를 넣어야합니다.

그리고 이로 인해, transactionManager.sign()에서 내부적으로 서명을 만들기 위해 필요한 sender의 address에 해당하는 private key를 가져오는 부분이 있는데 이 부분에서 NullPointerException이 나는게 아닌가 생각이 듭니다.

일단 SmartContractExecution instance를 만들때 사용되는 create() 메서드에 요구되는 파라미터를 다시한번 확인해보시고, 안되시면 추가적인 정보와 함께 다시 문의주시면 감사하겠습니다. :slight_smile:

  1. 사용하고 있으신 caver-java version
  2. exception이 발생한 부분에 대한 stack trace
1 Like

잘 해결 되었습니다. 감사합니다 :slight_smile:

1 Like