Caver-java-ext-kas 를 사용중입니다

caver-java-ext-kas 를 사용중입니다.

소스를 요약하자면

Contract contract = caver.contract.create(json, factory_address);
contract.send(sendOptions, “name” , “addr”, “arg1”, “arg2” );

이렇게 되어있는데 저 json abi의 자료형이 address[] 로 되어있는데
자바에서 arg2부분에 자료형을 어떻게 넣어야할까요…?

js 의 [] 과 같은 자료형을 쓰고싶어
Collections.EMPTY_LIST를 써봤는데 인덱스 바운드 에러가 뜨더라구요

안녕하세요.

Arrays.asList();로 arg2부분을 넘겨보시기 바랍니다.

그리고 트랜잭션을 전송하고자하는 스마트 컨트랙트 함수원형을 알려주시면 좀 더 쉽게 답변 드릴 수 있을 것 같습니다.

감사합니다.

Arrays.asList() 로 해결이 안되네요 ㅠ
함수 원형 입니다.
{
“constant”: true,
“inputs”: [
{
“name”: “token”,
“type”: “address”
},
{
“name”: “amount”,
“type”: “uint256”
},
{
“name”: “path”,
“type”: “address[]”
}
],
“name”: “exchangeKlayPos”,
“outputs”: [],
“payable”: true,
“stateMutability”: “payable”,
“type”: “function”
}

사용하시는 caver-java 버전을 알 수 있을까요?

그리고 코드를 어떻게 작성하셨는지도 정확히 전달부탁드립니다.

1.4.0 버전입니다.

	Contract contract = caver.contract.create(swapABI, factory_address);

	// BigInteger value = new
	// BigInteger(caver.utils.convertToPeb(buycount_klay, "KLAY"));

	SendOptions sendOptions = new SendOptions();
	sendOptions.setFrom(myKasAddr);
	sendOptions.setValue(new BigInteger(caver.utils.convertToPeb(BigDecimal.valueOf(1), "KLAY"))); //peb
	sendOptions.setGas(BigInteger.valueOf(2000000));

	// contract.call("exchangeKlayPos", buyCoinAddr,
	// BigInteger.valueOf(buycount_coin), new String[0]);
	try {
		contract.send(sendOptions, "exchangeKlayPos", buyCoinAddr, new BigInteger(caver.utils.convertToPeb(BigDecimal.valueOf(1), "KLAY")) , new int[10]);

	} catch (KASAPIException e) {
		System.out.print(e.getResponseBody().getMessage());
		
	}

소스원본입니다.

최신버전 1.6.3 사용해서 테스트 부탁드리겠습니다.

감사합니다.

1 Like