안녕하세요
Klaytn 초보입니다.
개발은 자바로 하고 있습니다.
현재 작업하고 있는 com.klaytn.caver 버젼입니다.
implementation ‘com.klaytn.caver:core:1.5.7’
implementation ‘xyz.groundx.caver:caver-java-ext-kas:1.1.1-rc.1’
ValueTransferMemo 를 사용시 input 값을 어떻게 줄지 몰라서 에러가 발생합니다.
input 값을 여러방식으로 해도 에러가 납니다.
샘플에서 잇는 String input = “0x68656c6c6f”; 깂으로 넣으면 잘됩니다.
그리고 이 부분은 블럭체인 정보에서 보니까 hello로 보입니다.
input을 어떤 방식으로 보내야 하는지요…?
input을 샘플이 있으면 input 만드는 부분 샘플 부탁합니다.
// 밑에 보면 작업을 해 본 방식입니다. (다 안욉니다.)
ValueTransferMemo valueTransfer = new ValueTransferMemo.Builder()
.setKlaytnCall(caver.rpc.getKlay())
.setFrom(keyring.getAddress())
.setTo("0xbceee75d94f032638b1ff7c5915a2290ef52b444")
.setValue(value)
// .setNonce("AASDFSDFSDFSDFS")
// .setGas(BigInteger.valueOf(25000))
.setGas(BigInteger.valueOf(55000))
// .setSignatures(signatureData)
.setInput(input)
.build();
// 작업을 해 본 방식입니다. (다 안욉니다.)
// ------ 문제 되는 부분 ----------------
String input = “”;
String sha256hex = Hashing.sha256()
.hashString(“abcdefghijklm”, StandardCharsets.UTF_8)
.toString();
input= “0x” + sha256hex;
byte[] serializedMember;
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
oos.writeObject("1234");
// serializedMember -> 직렬화된 member 객체
serializedMember = baos.toByteArray();
}
}
// 바이트 배열로 생성된 직렬화 데이터를 base64로 변환
System.out.println(Base64.getEncoder().encodeToString(serializedMember));
input = "0x" + Base64.getEncoder().encodeToString(serializedMember);
input = "0x" +serializedMember.toString();
System.out.println("input==>" + input);
// ------ 문제 되는 부분 ----------------
답변 부탁합니다.