180bpm

Unity로 DApp 개발하기 본문

Develop/Unity

Unity로 DApp 개발하기

powdersnow 2020. 11. 18. 18:17

nethereum을 이용한 이더리움 DApp 개발을 했다.

기술이나 이론을 모르는 상태에서 진행했는데 엄청 어렵진 않았다 다행히..

전송까지 6시간쯤 걸린듯.

 

테스트넷에서 거래 된것 확인함.

0. 준비

-지갑 생성부터.

메타마스크던 MEW던 뭐 아무데서나 만들어도 되지 싶다. 어짜피 테스트넷에서 돈받아서 쓸꺼니.

나는 MEW에서 만들고 메타마스크에서 import 함.

-테스트 코인 지급요청

실제 돈을 쓸순 없으니 테스트넷을 운영중인데에 가서 돈달라고 요청해야함. 돈나오는 구멍을 faucet이라고 부르더라.

gitter.im/kovan-testnet/faucet

 

kovan-testnet/faucet

Try Icarus for automated response: https://github.com/kovan-testnet/faucet or request Kovan ETH - only post your KETH address; no chatter

gitter.im

나는 kovan을 이용하기로 했음. 여기 가서 자기 지갑주소 적으면 4이더가 지급됨.

메타마스크에서 KOV를 선택하면 지급된 4이더를 확인 가능함.

-API 제공 사이트에서 주소 따오기

사전 준비 없이 API 제공해주는 사이트 이용해 바로바로 처리 하기로 한다.

infura.io/

 

Ethereum API | IPFS API Gateway | ETH Nodes as a Service | Infura

Infura's development suite provides instant, scalable API access to the Ethereum and IPFS networks. Connect your app to Ethereum and IPFS now, for free!

infura.io

하루에 10만req 까지 되니 이걸로.

 

1. nethereum

이더리움 관련 기능을 사용할 수 있게 하는 라이브러리.

github.com/Nethereum/Nethereum/tree/master/src/compiledlibraries

 

Nethereum/Nethereum

Ethereum .Net cross platform integration library . Contribute to Nethereum/Nethereum development by creating an account on GitHub.

github.com

유니티가 최신 버전일경우 unitynet35dlls을 쓰면 충돌 날 수 있으니 net461dllsAOT로 작업..을해야 하나 

TransferEther 호출시 ChanId를 넣으라는데..문서에서 뭘 넣으라는지가 안써있어서 ㅠㅠ

아래 샘플에 있는 라이브러리 가져다 썼다..

https://github.com/Nethereum/Unity3dSimpleSampleNet461

 

Nethereum/Unity3dSimpleSampleNet461

Very simple sample of setting up an Environment for Unity3d development using Net461 - Nethereum/Unity3dSimpleSampleNet461

github.com

그리고 샘플에 있는 잔액, 전송 기능을 잘 가져다붙임.

환율도 요청이 들어와서 검색해보니 업비트에 숨겨진 API가 있다더라. 그래서 그걸 사용함.

https://crix-api-endpoint.upbit.com/v1/crix/candles/minutes/1?code=CRIX.UPBIT.KRW-ETH&count=10&to

Json이라 파싱해서 값 꺼내옴.

 

1.가스의 개념을 이해하기 좀 어려웠는데..거래 수수료를 내가 제시해야하는건가?
문서보면 21gwei도 적당하다는데 GasPrice 얻어오는 API 호출하면 31gwei를 돌려준다.

근데 21도 잘 돌아가긴 했음.

 

2. 잔액조회는 주소로만 되고, 이체는 개인키로만 됨.

개인키 넣는거 자체가 뭔가 음.. 웹사이트에서 카드/CSV/비번 다 입력하라는 찜찜한 느낌..

메타마스크에 기능이 있는거같긴 한데 SDK를 지원하진 않는거같고..

이런걸 대신 처리해주는 신뢰할 수 있는 SDK 같은게 없나?하고 찾아보니 삼성에서 제공하는게 있긴 하다.

developer.samsung.com/sdp/blog/en-us/2020/09/17/send-ether-with-samsung-blockchain-platform-sdk

 

Send Ether with Samsung Blockchain Platform SDK

The Samsung Blockchain Platform SDK enables Android developers to develop applications that interact with the Etherum blockchain platform.

developer.samsung.com

3. 지갑 주소, 개인키 말고도 "Account"라는 개념도 있던데 이건 또 어떻게 쓰는거신가.

 

4. 거래 완료되는데 시간이 좀 걸림, 그래서 결제중 앱 크래시, 결제 완료후 검증등에 대한 처리가 필요하기때문에 서버의 의존성이 생김. 근데 이건 사실 그냥 결제할때도 필요한거긴 하다. 나는 일단 그냥 함.

 

5. 스마트 컨트랙트

이거 되게 중요한 개념같은데.. 다시봐도 잘 이해가 안된다.

이걸 이용해 4번의 유효성 검증을 블록체인 네트워크 상에서 가능하게 하는거같은데..
medium.com/haechi-audit-kr/smart-contract-a-to-z-79ebc04d6c86

 

실제로 사용가능하게 하려면

url을 테스트넷에서 mainnet으로 바꾸고, 거래 중단에 대한 대응을 추가로 하면 될듯 하다.

Comments