Unity Chainsafe Kaikas 연동 문의

유니티에 chainsafe를 적용시키려고 하는데, 카이카스 지갑이 메타마스크보다 접근성이 좋은 것 같아서 카이카스 지갑을 chainsafe에 추가하려고 합니다.
카이카스 같은 써드파티 지갑을 Chainsafe SDK 추가할 수 있을까요??

안녕하세요.

chainsafe의 web3.unity 라이브러리를 살펴보았는데요. web3Modal 에서 제공하는 지갑과 연결이 가능하도록 짜여진 것 같습니다.

대신 Chainsafe에서 제공하는 web3.unity 코드를 변형해서 사용하실 수 있을 것 같습니다.
예를 들면, web3GLTemplates 아래의 index.js 부분에서 지갑과 연결하는 부분인 connect 함수에서 kaikas지갑과 연결되도록 변경할 수 있는데요. kaikas 지갑과 연결하는 부분은 이 repo를 참고하실 수 있습니다.

또 다른 방법은 Chainsafe를 사용하지 않고 직접 구현하시는 방법이 있습니다. 이 게시물을 참고하셔도 좋을 것 같습니다.

감사합니다.

2 Likes

감사합니다…
제가 개발을 시작한지 얼마 되지 않아서 잘 모르는데, 말씀해주신 index.js 파일에서 web3기반의 코드를 카이카스와 연동하려면 caver기반으로 모두 바꿔야할까요??
Connect함수의 어떤 부분을 바꿔야할지 잘 모르겠습니다…

1 Like

Caver-js는 Klaytn이 제공할 수 있는 기능에 초점을 맞춰 만들어진 sdk입니다. 그렇기 때문에 web3js와 사용법 자체는 비슷하지만 Klaytn이 제공할 수 있는 다양한 기능들을 자유롭게 이용하기 위해서는 caver-js를 쓰시는 게 좋습니다. (이 게시물을 읽어보시면 좋을 것 같습니다.)

Connect 함수 아래를 변경하는 것 이외에도 트랜잭션을 만들고 전송하는 것들에 익숙해지시기 위해 tutorial을 통해 어떻게 동작하는 지 이해하시는게 도움이 될 것 같습니다.

  1. Connect()는 지갑을 연결하는 부분입니다. Kaikas 지갑을 연결하는 방법은 kaikas-tutorial/KaikasPage.js at master · klaytn/kaikas-tutorial · GitHub 의 loadAccountInfo() 함수를 참고하시면 좋을 것 같습니다. 그리고 setAccountInfo()를 참고하시면 Address와 그 주소의 잔액을 불러오실 수 있습니다.
  2. Caver-js를 사용한 예제 코드들은 여기서 참고하시면 좋을 것 같습니다: https://ko.docs.klaytn.foundation/dapp/sdk/caver-js/getting-started (한글) , https://docs.klaytn.foundation/dapp/sdk/caver-js/getting-started (영문)
  3. Unity 관련해서 참고하실 수 있는 자료로는, kaikas 지갑과 klip 지갑으로 로그인해서 nft를 조회해서 볼 수 있는 3d-nft-gallery 리포도 있습니다.

더 궁금하신게 있다면 질문 남겨주세요!
감사합니다.

2 Likes

감사합니다 클레이튼 지갑을 메타마스크에 연결해서 유니티에 연동했습니다…
클레이튼 nft를 유니티에 연동하고 싶은데요
using System.Collections;
using System.Numerics;
using System.Collections.Generic;
using UnityEngine;

public class ERC721BalanceOfExample : MonoBehaviour
{
public string tokenId = “nft 토큰id”;

public GameObject Image;

async void Start()
{
    string chain = "klaytn";
    string network = "Baobab";
    string contract = "테스트용 nft 컨트랙트 주소";
    string account = PlayerPrefs.GetString("Account");


    BigInteger balanceOf = await ERC721.BalanceOf(chain, network, contract, account, tokenId);
    print(balanceOf);

    if (balanceOf > 0)
    {
        Image.SetActive(true);
    }
}

}
chainsafe를 사용해서 보유nft를 확인하고 보유하고 있다면 inactive 되어있는 이미지를 active true로 바꾸는 코드를 사용하려 합니다.
그런데 아무리 시도해도 이미지가 활성화가 안되네요… 도움이 필요합니다…

클레이튼 nft를 rpc로 연결했으나
Balance of가 토큰 id에 아무값이나 넣어도 무조건 0보다큰 수가 되어 active가 됩니다…
컨트랙트 주소는 일치해야 액티브가 되는데,
tokenId값이 일치해야 되는 조건을 넣을 수가 있을까요

안녕하세요.

체인 세이프 코드를 봤을 때 balanceOf 함수에는 token Id 파라미터가 없습니다. 또한 계정이 가지고 있는 해당 ERC721 컨트랙트의 NFT 갯수를 반환하는 함수 인 것 같습니다. token ID로 확인을 하기 위해서는 이 코드에 있는 다른 함수들을 사용해야 하지 않을까요? 예를 들면 token ID를 사용해서 owner를 불러올 수 있는 함수도 있습니다. 체인세이프 내의 함수들의 용도를 살펴본 뒤 사용하시는 것을 추천드립니다.

1 Like

nft의 owner를 알게 되면 그 owner와 지금 확인하고자 하는 계정의 주소를 비교하는 것으로 nft 보유를 확인할 수 있지 않을까요?

1 Like

답변감사드립니다…
시도해보겠습니다!

혹시 해결하셨나요 ?? 저도 준비중이라 유니티로
이것저것해봐도 잘안되는데
오픈톡링크라도 하나 남겨주시면 피드백하면서 해보고싶은데…

저도 아직 갈피를 못잡고있습니다…
죄송합니다 ㅠㅠ

감사합니다
같은 컨트랙트 주소의 nft를 토큰id를 통해 구분하고 싶습니다

tokenid1~100까지는 A라는 게임오브젝트를 active하고 101~200은 B라는 게임오브젝트를 Active하고 싶은데
erc721의 balanceof는 컨트랙트 주소의 nft 보유갯수를 표시해주고
ownerof는 소유자를 표시해줘서 해당 기능을 구현하는 법을 잘 모르겠습니다…
같은 컨트랙트주소내에서 tokenid를 구분할 수 있는 기능이 있을까요??

안녕하세요.

token id를 구분한다는 것이 잘 이해가 가지 않는데요. 정확히 어떤 기능이 필요하신 건지 더 자세히 설명해주실 수 있으신가요?

1 Like