https://github.com/WalletConnect/WalletConnectUnity
WalletConnect C# 버전을 유니티로 버전으로 작성한 Library
일반적인 경우는 Document 를 보고 사용하면 큰 문제가 없다.
하지만 SmartContract 를 작성해서 토큰을 전송하거나 하려면, 코인에 대한 지식없이 작업하기란,
정말 내장이 뒤틀리고 정신이 아득해진다...
라이브러리 사용해서 SmartContract Token 전송을 위한 내용입니다.
* SmartConract 전송을 위한방법 ( ERC20 또는 BEP20 ) 토큰을 사용했음.
https://ryublock.tistory.com/29
기본적인 내용은 이곳을 참고했음.
간단하게 요약하자면, TransactionData 의 경우 인코딩된 값이라는것이다.
Data 필드에 우리가원한는 처리에 대한 인코딩 정보를 보내면, 네트워크 상에서 해당 처리를 해준다는게 핵심!
아래 예제는 데모에서 약간의 수정만 거친내용
public async void OnClickSendTransaction()
{
var address = WalletConnect.ActiveSession.Accounts[0];
var transaction = new TransactionData()
{
data = "a9059cbb000000000000000000000000523cb375c8415b903c48259d52f01a5a0a2c2adc0000000000000000000000000000000000000000000000000000000000000064",
from = address,
to = "0x2f23b391e55ae429916ee818f97c810dc34e69bd",
gas = "21000",
value = "0",
chainId = 0x61,
};
var results = await SendTransaction(transaction);
resultText.text = results;
resultText.gameObject.SetActive(true);
}
to : Contract 의 주소
from : 큰의미는 없지만 일단은 지갑의 주소를 입력
value : Contract 의경우 Data 의 정보를 가지고 얼마를 보낼건지에 대한 처리가 진행하기때문에 0 으로 입력
chainId : 네트워크의 번호 ( MetaMask 의경우 0x61 ) 형태로 입력하지않고 십진수(97) 로 입력할경우 에러를뿜고 어플이 죽는다. ( 이부분때문에 고생을 조금 했습니다. )
즉 기본적인 형태는 동일하지만 Contract 로 작성된 토큰의 경우는 data 필드가 중요하다고 보면 됨.
아직 보완해야될점은 Runtime 중에 data 값을 인코딩 하는 방법을 수정해야됩니다.
* 데모코드이므로, 상용에서 사용시 수정 및 보완해야됩니다.