데이타 저장 및 조회에 대해서 문의드립니다

블록체인에 대해서 잘 모르는 상태에서 개발을 하려니 자꾸 막히네요~
여러가지 시도하다가 방향이 잘못된거 같아서 문의드립니다.

토큰을 생성하고 토큰을 전송시 특정 데이타를 붙혀서 전송을 하고
추후에 저장한 데이타를 특정 조건으로 조회하려고 합니다.

  1. 스마트컨트렉트로 기본 KIP-7 를 만들고
  2. transferwithData라는 함수를 만든 다음
  3. 데이타를 관리하는 컨트렉트에 Data만 call로 전송하고 저장을 하였습니다.
    (struct를 만들고 push로 데이타가 들어올때마다 저장을 하였습니다.)

데이타 저장은 전혀 문제가 없는데, 전송건수가 많아지니 문제가 생기더군요.
첫번째 가스비가 많이 들고, 다시 데이타를 꺼내올때 데이타양이 많아 지다보니
out of gas로 데이타를 꺼낼수가 없거군요…

아무리 생각해도 위의 방법은 아닌거 같아서 다른 방법을 생각해 봤습니다.
위의 2번까지는 동일한데, 데이타를 관리하는 컨트렉트가 따로 없이
토큰송수신기록을 이용하는걸 생각해봤습니다.
그런데, 토큰 송수신기록 조회 api에는 input data를 조회할수가 없는거 같네요 ㅠㅠ

하려는 일은 아래와 같습니다.

  1. KIP-7 토큰을 만들고 기본 토큰 기능을 수행한다
  2. 토큰 전송시 토큰 수량 외에 특정 데이타를 붙혀서 전송한다 (scope에 찍혀야 합니다)
  3. 저장한 데이타 리스트를 조회한다

기본적인 방향과 뭘 어떻게 이용해야 하는지 도움 부탁드립니다.
감사합니다

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

일단, 데이터를 추가 전송하시기 위해서는 별도의 함수를 만드실 필요 없이 아래 함수를 이용하셔도 될 것 같습니다.

function safeTransfer(address recipient, uint256 amount, bytes data) external;
function safeTransferFrom(address sender, address recipient, uint256 amount, bytes data) external;

그리고 블록체인의 데이터는 특정 시점의 데이터를 조회하는 데 적합하게 구성되어 있기 때문에, 저장한 데이터 리스트를 조회하는 것에는 적합하지 않습니다. 해당 함수에서 이벤트를 발생시키고 해당 이벤트를 추적하여 별도의 DB를 구성하는 것을 추천드립니다.

감사합니다.

감사합니다~ 안되는걸 가지고 고민을 했군요 ㅠㅠ

1 Like