제 local 에 있는 ganache 를 이용해서 transaction을 한번 flutter 로 해서 구현을 해 보았습니다.
간단하게 floating button을 이용해서 화면을 생성했구요.
Debug 창에서 값이 찍히는 것을 확인하면서 간단하게 원리만 알도록 해보았습니다.
유튜브에 있는 것을 가지고 구현을 하는데 github에 소스도 없고 해서 계속 에러가 나서 그 소스를 참고해서 만들어 보았습니다.
이 예제를 실행하기 위해서는 3개의 package가 필요합니다.
pubspec.yaml 에 아래의 package를 추가하시고 간단히 구현을 해보면 transaction이 일어납니다.
web3dart: ^2.3.3
http: ^0.13.4
web_socket_channel: ^2.1.0
간단한 함수에 소스를 구성을 했습니다.
물론 실전에서는 rpc주소와 websocket 의 주소는 db 에서 관리를 해서 받아서 처리를 해야하지만
먼저 web3dart를 이용해서 간단하게 보내는 것만 이렇게 정리해 보았습니다.
String rpcUrl = "http://127.0.0.1:7545";
String wcUrl = "http://127.0.0.1:7545/";
String strCenter = "송금 Data";
void sendToken() async{
Web3Client client = Web3Client(rpcUrl, Client(), socketConnector: (){
return IOWebSocketChannel.connect(wcUrl).cast<String>();
});
//개인키 : ganache 복사해서
String privateKey = "0a55cf8fe88a5b36e74aa1354cb3d8c498f2282d51c7b9dbcfa00e0be22ba8ad";
Credentials credentials = await client.credentialsFromPrivateKey(privateKey);
//이더리움 개인 hex address 를 가지고 온다.(보내는 사람의 주소)
EthereumAddress ownAddress = await credentials.extractAddress();
//받을 사람의 hexa address
EthereumAddress receiverAddress = EthereumAddress.fromHex("0xdCBB475f6Ffd263c91DB1A8461B7F149bCDbd673");
client.sendTransaction(credentials, Transaction(from: ownAddress, to: receiverAddress, value: EtherAmount.fromUnitAndValue(EtherUnit.ether, 5)));
print('ownAddress : '+ ownAddress.toString());
// print(await client.getBalance(ownAddress));
}
아, 겨우 이거 만드는데 생각 보다 힘드네요.
소스는 github에 올리고 다시 링크를 올려드릴께요
https://github.com/jonathanLee/flutterdappsample#flutterdappsample
위의 소스를 가지고 ganache와 연동된 youtube 영상이다.
[Mac OS X bug] Unable to load JNA library (OS: Mac OS X 12.3.1)해결방안 (0) | 2022.04.12 |
---|---|
[Flutter] WebView를 사용하는 방법 (0) | 2022.04.08 |
flutter calendar custom 사용법 (0) | 2022.02.22 |
dart source file naming 규칙 (0) | 2022.01.10 |
flutter 2.5 skeleton project 생성 (0) | 2021.12.17 |