Kas 로 컨트렉트 배포시 오류 발생 건

안녕하세요.
오랜만에 문의 남깁니다.
무료 노드가 21일까지만 운영된다고 해서 부랴부랴 KAS로 전환중입니다.
KAS 의 readme 에 있는 에제대로 실행을 했는데 알수 없는 오류가 발생해서 문의드립니다.

여기에 있는 예제를 실행했을 때 NullPointException 예외가 발생합니다.

CaverExtKAS caver = new CaverExtKAS(ChainId.BAOBAB_TESTNET, accessKey, secretAccessKey);
String from = "0x764c879053675939e7f76C587A788f911059B01C";

//deploy KIP7 contract
BigInteger initialSupply = BigInteger.TEN.multiply(BigInteger.TEN.pow(18)); // 10 * 10^18
KIP7 kip7 = KIP7.deploy(caver, from, "KAS", "SDK", 18, initialSupply);

예외 결과
java.lang.NullPointerException
at xyz.groundx.caver_ext_kas.wallet.KASWallet.isWeightedMultiSigType(KASWallet.java:296)
at xyz.groundx.caver_ext_kas.wallet.KASWallet.sign(KASWallet.java:174)
at com.klaytn.caver.contract.Contract.deploy(Contract.java:201)
at com.klaytn.caver.contract.Contract.deploy(Contract.java:172)
at com.klaytn.caver.kct.kip7.KIP7.deploy(KIP7.java:172)
at com.klaytn.caver.kct.kip7.KIP7.deploy(KIP7.java:146)
at com.klaytn.caver.kct.kip7.KIP7.deploy(KIP7.java:103)

위에서 사용된 주소는 KAS에 등록된 주소로써 확인해보면 아래와 같습니다.

CaverExtKAS caver = new CaverExtKAS(ChainId.BAOBAB_TESTNET, accessKeyId, secretAccessKey);
Account account = caver.kas.wallet.getAccount(“0x764c879053675939e7f76C587A788f911059B01C”);
System.out.println("account = " + account);

account = class Account {
address: 0x764c879053675939e7f76C587A788f911059B01C
chainId: 1001
createdAt: 1613260356
keyId: …
publicKey: 0x047e660563b95a7ba2ae5dbdd6586bdea252b122c674bbf90e73a47691e9a527b0b3a30e743b517ecb9e7737c17eaf085c68ce8be0355ae2bade32a200e9632f85
updatedAt: 1613260356
multiSigKeys: null
threshold: null
}

어떤 문제때문일까요?

감사합니다.

안녕하세요.

Klaytn scope로 확인해보니, contract의 deployer로 사용하신 from(“0x764c879053675939e7f76C587A788f911059B01C”)에 klay가 없는 것으로 보이는데요. contract 배포를 위한 충분한 klay를 해당 계정으로 전송하신 뒤에 테스트해보시면 잘 될 것이라고 생각합니다.

그와는 별개로, Null Pointer Exception이 발생한 이유는,
KASWallet class는 AccountKeyWeightedMultiSig Type의 Sign은 지원하지 않는데요.
이를 확인하기 위해 "from"으로 전달한 account의 Account Key 정보를 caver.rpc.klay.getAccountKey()를 통해서 확인하게 됩니다.
알려주신 "from"으로 사용되는 account는 KAS로부터 생성된 이후 Klaytn에 기록된 이력이 없어서, getAccountKey()를 이용한 정보 조회중에 문제가 발생했습니다. 이 버그는 수정하는대로 다시 댓글 달겠습니다.

그리고 추가질문이 있으시면 댓글 부탁드리겠습니다.
감사합니다.

위 이슈를 해결한 caver-java-ext-kas 1.1.1-rc.1을 릴리즈하였습니다.

참고부탁드립니다.

1 Like

네. 신속한 해결 감사합니다.
내용 참고하겠습니다.

1 Like