Block_Chain_Project - 4 [ERC-20, ERC-721거래]

Lumi·2021년 12월 31일
0

Block_Chain_Project

목록 보기
11/30
post-thumbnail

Youtube : https://www.youtube.com/watch?v=ZFWrmmI_l_o

  • 시현 영상

github :https://github.com/codestates/BEB_01_WhyDoesItWork/tree/hojin

  • 들어가지지 않는다면 아직 프로젝트 기간이 끝나지 않았다는 것을 의미합니다!

🔥 목표

일단 최초 목표로 하였던 ERC-20을 통하여 네트워크를 구성하는 부분까지는 완성 하엿다고 생각을 합니다.

팀원 한명의 부재로 시간이 없고 합의하에 개인적으로 프로젝트를 진행하면서 공부를 하다보니 프론트쪽은 손을 보지 못하였습니다.

그래도 기능적으로는 얼추 완벽하게 작동을 하기 떄문에 만족하고 있습니다.

추가적으로 작업해 보고 싶은 부분은 배치서버 입니다.

현재 영상에서도 언급을 하였지만 저는 web3의 네트워크를 가나슈를 통해서 진행을 하고 있습니다.

하지만 Ropsten네트워크를 활용하게 된다면 블록데이터를 처리하는데에 시간이 걸리기 떄문에 원활한 진행이 되지 않습니다.

그러기 떄문에 배치서버가 필요한 부분이고 이러한 배치서버에 대해서 가능하다면 구현 또는 공부를 해보고자 합니다.

추가적으로 가지고 있는 토큰을 활용하여 NFT를 만드는 것 또한 작성을 해보고자 하였지만 이러한 부분은 이미 많이 다루었기 떄문에 배치서버에 대해서 공부를 해볼 것 입니다.

🔥 코드

프로젝트는 어느정도 마무리가 되었다고 생각을 하기 떄문에 프로젝트 코드에 대해서 간략하게 다루고 넘어가도록 하겠습니다.

  • web3부분에 대해서만 다루겠습니다.
const tx = await web3.eth.accounts.signTransaction(
    {
      from: process.env.owner,
      to: process.env.TOKEN_CA,
      gas: 500000,
      data: TokenContract.methods
        .mintToken(address, process.env.NFT_CA, 3)
        .encodeABI(),
    },
    process.env.owner_key
  );

  await web3.eth.sendSignedTransaction(tx.rawTransaction, (err, hash) => {
    if (!err) console.log(hash);
    else console.log(err);
  });

Token을 지급하는 코드 입니다.

사실 이러한 트랜잭션 코드들은 형태는 거의 동일합니다.

기본적으로 from, to, gas등을 설정해 주어야 하고 data부분은 필요한 경우에 작성을 해주게 됩니다.

저 같은 경우에는 mintToken함수를 활용 하였고 중요한 점은

call()같이 가스비가 소요되지 않는 트랜잭션이 아니라 가스비가 소요되는 것이기 떄문에 encodeABI()로 인코딩 해주어야 합니다.

또한 저는 사용자들이 직접 트랜잭션을 실행시키는 것이 아니라 서버쪽에서 제공을 하는 역할이기 떄문에 서명된 트랜잭션을 발생 시켜야 하며 이러한 부분을 적용 하였습니다.

      await web3.eth.sendTransaction(tx);
  • 만약 트랜잭션을 단순하게 요청할떄에는 sendTransaction을 활용하여 트랜잭션을 사용자에게 요청합니다.

이러한 부분을 토대로 mintToken도 같이 적용가능합니다.

	const amount = await NFTContract.methods.showTokenAmount(address).call();
  • 이처럼 가스비가 소요되지 않는 view함수를 호출할떄에는 call()을 사용 합니다.
profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글