Voting 사이트 - 완

Lumi·2022년 3월 15일
0
post-thumbnail

🔥 개요

개인적인 일이 있어서 아버지를 도와드리느라 프로젝트 및 공부를 진행하지 못하였습니다.

틈틈히 시간 내어서 한다고 했는데 몸 쓰는 일이였다 보니 생각보다 많이 피곤해서 최대한 마무리하는대로 글을 작성합니다.

기존에는 Node서버TypeScript를 활용하여 구현을 해보려고 했는데

굳이 컴파일 형태로 작성해야하는 필요성도 느끼지 못하였고

Server가 없는 Client형태로만 존재하는 프로젝트를 구성해보고 싶어서 서버 작업은 하지 않았습니다.

🔨 FeePayer

음.. 어느정도 거의다 완료하고 단순히 caver-js를 활용하여 컨트랙트를 실행하면 되기 떄문에 그렇게 많은 작업은 하지 않았고

뭐 따로 다루어야 할 부분은 PeePayer부분 정도만 될 것 같습니다.

Web3.js 라이브러리와 다르게 caver-js에서는 FeePayer를 존재합니다.

  • 단어 그대로 가스비를 대신 내주는 것을 말합니다.

사실 프로젝트 구성을 이상하게 하였습니다.

  • PeePayer는 특정 행위에 있어서 가스비를 대신 내주는 방식으로 진행이 되어야 하는데
  • 저는 그냥 useEffect부분에 함수를 실행시킴으로써 사용자가 갑작스렇게 트랜잭션을 보내게 됩니다.

이러한 이유는 개인적으로 시간이 부족하였기 때문에;;; 사실상 FeePayer를 사용하는데에 의미를 두었습니다.

export const check_time_for_delete = async () => {
  Voting_Contract().then(async (method) => {
    const data = await method.view_total_Proposal().call();

    for (let i = 0; i < data.length; i++) {
      if (!check_time(data[i].end_time)) {
        let delete_data = method.done_Proposal(data[i].id).encodeABI();
        let tx = await make_Tx(delete_data);

        const { rawTransaction: senderRawTransaction } =
          await caver.klay.accounts.signTransaction(
            {
              type: "FEE_DELEGATED_SMART_CONTRACT_EXECUTION",
              from: tx.from,
              to: tx.to,
              gas: tx.gas,
              data: tx.data,
            },
            KEY
          );

        await caver.klay.sendTransaction({
          senderRawTransaction: senderRawTransaction,
          feePayer: FeePayer,
        });
      }
    }
  });
};

전체 코드 입니다.

이 코드에서 make_Tx부분은 별 필요가 없다고 생각이 듭니다.

  • 그냥 단순히 data[i]에서 값을 불러와도 됩니다.

어느정도 간단하게 이해가 될 것이라고 생각을 합니다.

일단 트랜잭션에 서명을 한뒤 실제로 트랜잭션을 전송할떄 FeePayer를 등록시켜주면 됩니다.

🔥 느낀점

PeeFayer부분은 Klaytn Docs에도 많은 정보가 남아 있으니 이 부분은 참고하면 됩니다.

개인적으로 아주 아주 간단한 프로젝트를 해보았습니다.

중간에 시간이 남지 않아서 완벽한 프로젝트를 구성하지는 못하였고 많은 부분을 진행하지는 못하였지만

그래도 코딩하는 부분이 재미있고 즐겁다는 사실을 다시한번 느끼는 시간이 되었던것 같습니다.

감사합니다.

🔥 Youtube

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글