클립으로 생성된 50 klay의 전송 트랜잭션을 확인할 수 있을까요?

클립으로 생성된 계정을 확인하고 있습니다. 클립으로 생성된 주소로 트랜잭션을 발생시키고 해당 트랜잭션을 스코프에서 확인하니 트랜잭션을 확인할 수 있었습니다.

다만, 정작 초기 부여받은 50 KLAY가 어떻게 전송되었는지에 대한 트랜잭션은 현재 스코프에서 확인할 수 없는 것으로 보이는데요.

얼핏 인터널 트랜잭션으로 전송되었다는 이야기는 들은 적이 있습니다.

생성된 트랜잭션을 확인할 수 있는 방법이 있을까요? 관련 json-rpc 메소드나 caver 함수등을 알려주시면 감사하겠습니다.

안녕하세요, 클레이튼 포럼에 질문을 올려주셔서 감사드립니다.

50 KLAY는 컨트랙트 실행으로 전송되었기 때문에 internal transaction을 통해서 확인할 수 있습니다.

하지만 아직 scope에서 기존의 internal transaction에 대한 처리가 진행중인 상황이라서 정확하게 확인할 수는 없습니다.

예시가 되는 트랜잭션은 아래 링크에서 확인하실 수 있습니다.

Internal transaction tab에서 확인하실 수 있듯이 아직은 "Data collection has not been completed"로 표시되고 있고, 처리가 되면 해당 내용을 확인하실 수 있을 것 같습니다. 다만 internal transaction을 분석하는 데에는 시간이 조금 많이 필요해서 언제 표시가 될 수 있다는 일정은 말씀드리기는 어려울 것 같습니다.

감사합니다.

답변 감사드립니다.

제가 좀 혼동되는데요. Klip에 지급된 50 KLAY의 경우 Legacy Transactions이나 Value Transfer로 트랜잭션이 발생할것이라 생각했습니다. Smart Contract Execution으로 전송되었다 함은 KLAY가 레거시 토큰이 아닌 스마트 컨트랙트인 것인지요?

예시로 주신 트랜잭션의 경우 TO(0xa213…f5d25f)가 50 KLAY를 받고 FROM(0x887e…5d3bcc)이 50 KLAY를 주는 것은 아닌 것 같습니다. 현재 Value amount = 0 KLAY 로 나와있습니다. 아니면 클레이 스코프에서 Internal Transaction이 해석이 안되어서 Value amount가 잘못 표시 되는 것일까요.

저는 KCT가 아닌 KLAY의 모든 이동(reward 또는 fee는 제외)은 Legacy Transaction 또는 Value Transfer에서 확인할 수 있을 것이라 예상했는데요. 말씀대로라면 Smart Contract Execution등에서도 KLAY의 이동이 가능한 것인지요.

질문이 두서없습니다만, 확인 가능하시면 답변 부탁드리겠습니다.

감사합니다.

안녕하세요. 아래에 구분지어 답변을 드리도록 하겠습니다.

  1. 스마트 컨트랙트 실행으로 Klaytn native token인 KLAY를 전송할 수 있습니다. Legacy transaction 혹은 smart contract execution transaction으로 스마트 컨트랙트를 실행시킬 수 있습니다.

  2. TO의 주소가 스마트 컨트랙트 주소입니다. input data영역에 들어있는 값에 따라 특정 함수가 실행되고 특정된 account에 KLAY를 전송합니다. FROM은 해당 smart contract를 실행시킬 수 있는 EOA입니다.

  3. value amount가 0인것은 smart contract를 실행하면서 KLAY를 옮기는 것이 아니고 smart contract가 가지고 있는 KLAY를 input에 지정된 주소로 KLAY를 전송하는 것이기 때문에 transaction의 value amount는 0으로 표기가 됩니다. 즉, value transfer로 모든 KLAY의 이동을 확인하실 수는 없습니다.

답변이 부족하다면 추가 질문 부탁드리겠습니다. 감사합니다.

상세한 답변 감사드립니다.

이더리움을 생각하다보니 차이가 있었던 것 같네요. 저는 이더리움의 경우 스마트컨트랙트 수행으로 네이티브 토큰을 이동할 수는 없는 것으로 생각하고 있었거든요.(이 부분도 아닐 수 있습니다만;)

다음과 같이 파악을 했습니다.

주소A: EOA
주소B: SCA
주소C: EOA
주소D: EOA
트랜잭션1 : 주소A에서 주소B의 스마트컨트랙트를 수행하여, 주소B의 KLAY를 주소C로 전송할 수 있음. (이때 수수료는 주소D가 대납)

  1. 현재는 주소A에서 트랜잭션1을 확인할 수 있으며
    From: 주소A, To: 주소B, Fee Payer: 주소D, 트랜잭션타입: FeeDelegatedSmartContractExecution

  2. 실제 KLAY 이동 (주소B -> 주소C)의 경우 input data에 인코딩 되어 있으며, 현재 스코프에서는 확인 불가능

다음에 의문이 생깁니다.

  1. 주소B의 스마트컨트랙트로 제어할 수 있는 계정은 당연히 주소B의 KLAY에 한정인 것이죠?

  2. 주소C에서 트랜잭션1을 확인할 수 있는 방법, 또한 그 연결고리는 현재 없음. (혹시 향후 계획은?)

  3. 트랜잭션1의 input data를 디코딩해서 확인할 수 있는 방법은 없을까요? (json-rpc)

답변해주시면 감사하겠습니다.

안녕하세요,

이더리움도 동일하게 transfer, send() 등의 함수를 통해 네이티브 토큰을 전송할 수 있습니다.

실제 KLAY 이동 (주소B -> 주소C)의 경우 input data에 인코딩 되어 있으며, 현재 스코프에서는 확인 불가능

스코프에서 input data를 확인할 수는 있습니다. 그것의 decoding된 형태를 제공하지 않아서 보기가 쉽진 않습니다.
위 트랜잭션을 보면 0x799b77291db49dbe8e4c3a368dfae380eff34226 의 주소로 KLAY를 전송한 것으로 파악됩니다.

주소B의 스마트컨트랙트로 제어할 수 있는 계정은 당연히 주소B의 KLAY에 한정인 것이죠?

질문이 잘 이해가 되지 않습니다만, 주소B가 전송할 수 있는 KLAY는 해당 계정의 KLAY입니다. 다만 주소B가 또다른 SCA를 호출하고 그 함수 안에서 다시 KLAY를 전송하는 식으로 구현할 수는 있습니다. 이렇게 구현된다면 주소 B의 KLAY가 아닌 다른 SCA의 KLAY를 전송할 수도 있겠지요.

주소C에서 트랜잭션1을 확인할 수 있는 방법, 또한 그 연결고리는 현재 없음. (혹시 향후 계획은?)

현재 없다고 하기 보다는 internal transaction이 처리되지 않아서 확인할 수 없다는 것으로 이해하시는 것이 맞을 것 같습니다. KlaytnScope에서 지난 block들의 internal transaction 처리가 완료되면 확인 가능할 것이라고 예상합니다.

트랜잭션1의 input data를 디코딩해서 확인할 수 있는 방법은 없을까요? (json-rpc)

디코딩하기 위해서는 해당 contract의 ABI를 안다면 가능합니다. 다만 클립의 배포 컨트랙트의 ABI는 공개되어 있지 않습니다.

감사합니다.

상세한 답변 감사드립니다.
많은 도움이 되었습니다.

1 Like