180bpm
Unity로 DApp 개발하기 본문
nethereum을 이용한 이더리움 DApp 개발을 했다.
기술이나 이론을 모르는 상태에서 진행했는데 엄청 어렵진 않았다 다행히..
전송까지 6시간쯤 걸린듯.
테스트넷에서 거래 된것 확인함.
0. 준비
-지갑 생성부터.
메타마스크던 MEW던 뭐 아무데서나 만들어도 되지 싶다. 어짜피 테스트넷에서 돈받아서 쓸꺼니.
나는 MEW에서 만들고 메타마스크에서 import 함.
-테스트 코인 지급요청
실제 돈을 쓸순 없으니 테스트넷을 운영중인데에 가서 돈달라고 요청해야함. 돈나오는 구멍을 faucet이라고 부르더라.
gitter.im/kovan-testnet/faucet
나는 kovan을 이용하기로 했음. 여기 가서 자기 지갑주소 적으면 4이더가 지급됨.
메타마스크에서 KOV를 선택하면 지급된 4이더를 확인 가능함.
-API 제공 사이트에서 주소 따오기
사전 준비 없이 API 제공해주는 사이트 이용해 바로바로 처리 하기로 한다.
하루에 10만req 까지 되니 이걸로.
1. nethereum
이더리움 관련 기능을 사용할 수 있게 하는 라이브러리.
github.com/Nethereum/Nethereum/tree/master/src/compiledlibraries
유니티가 최신 버전일경우 unitynet35dlls을 쓰면 충돌 날 수 있으니 net461dllsAOT로 작업..을해야 하나
TransferEther 호출시 ChanId를 넣으라는데..문서에서 뭘 넣으라는지가 안써있어서 ㅠㅠ
아래 샘플에 있는 라이브러리 가져다 썼다..
https://github.com/Nethereum/Unity3dSimpleSampleNet461
그리고 샘플에 있는 잔액, 전송 기능을 잘 가져다붙임.
환율도 요청이 들어와서 검색해보니 업비트에 숨겨진 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
3. 지갑 주소, 개인키 말고도 "Account"라는 개념도 있던데 이건 또 어떻게 쓰는거신가.
4. 거래 완료되는데 시간이 좀 걸림, 그래서 결제중 앱 크래시, 결제 완료후 검증등에 대한 처리가 필요하기때문에 서버의 의존성이 생김. 근데 이건 사실 그냥 결제할때도 필요한거긴 하다. 나는 일단 그냥 함.
5. 스마트 컨트랙트
이거 되게 중요한 개념같은데.. 다시봐도 잘 이해가 안된다.
이걸 이용해 4번의 유효성 검증을 블록체인 네트워크 상에서 가능하게 하는거같은데..
medium.com/haechi-audit-kr/smart-contract-a-to-z-79ebc04d6c86
실제로 사용가능하게 하려면
url을 테스트넷에서 mainnet으로 바꾸고, 거래 중단에 대한 대응을 추가로 하면 될듯 하다.