Java SDK สำหรับ Decentralized Finance (Blockchain)
Run code
/src/test/java/me/jittagornp/defi/GenerateWallet.java
ก็จะได้ Wallet เป็นไฟล์ .json ขึ้นมาอยู่ใน Path ~/crypto-wallet/ (Home Directory)
หมายเหตุ
อย่าลืมเปลี่ยน Wallet Password ก่อน Run code น่ะ
Run code
/src/test/java/me/jittagornp/defi/DeFiTest.java
จะแสดงค่า Token ต่าง ๆ ออกมา
final String WALLET_DIRECTORY = System.getProperty("user.home") + "/crypto-wallet";
final String WALLET_FILE_NAME = "UTC--2021-07-08....json";
final String WALLET_PASSWORD = "<YOUR_WALLET_PASSWORD>";
final Credentials credentials = WalletUtils.loadCredentials(WALLET_PASSWORD, new File(WALLET_DIRECTORY, WALLET_FILE_NAME));
//
final DeFi deFi = DeFiSDK.bscMainnet(credentials);
Functions/Methods ทั้งหมด Default เป็น Asynchronous โดยใช้ Java Future
ดูราคา Gas ปัจจุบัน ว่าราคาเท่าไหร่ (หน่วย Gwei)
CompletableFuture<BigDecimal> getGasPrice();
ดู Gas ใน Wallet ว่าเหลืออยู่เท่าไหร่
CompletableFuture<BigDecimal> getGasBalance();
ดูว่า Token (Address) นี้เหลืออยู่ใน Wallet เราเท่าไหร่
CompletableFuture<BigDecimal> getTokenBalance(final String token);
ดูจำนวน Token B ที่จะได้รับ เมื่อนำ Token A ไปแลกบน Router (DEX/AMM)
CompletableFuture<BigDecimal> getTokenAmountsOut(final String swapRouter, final String tokenA, final String tokenB, final BigDecimal amount);
ดูราคา Token A เทียบกับ Token B บน Router (DEX/AMM)
CompletableFuture<BigDecimal> getTokenPrice(final String tokenA, final String tokenB, final String swapRouter);
ดูข้อมูล Token + เทียบราคากับ Token Pair บน Router (DEX/AMM)
CompletableFuture<TokenInfo> getTokenInfo(final String token, final String tokenPair, final String swapRouter);
ดูข้อมูล Token ทีละหลาย ๆ อัน + เทียบราคากับ Token Pair บน Router (DEX/AMM)
CompletableFuture<List<TokenInfo>> getTokenInfoList(final List<String> tokens, final Function<String, String> tokenPair, final Function<String, String> tokenRouter);
ดูจำนวน Token ที่เคย Allow ไว้ให้ Smart Contract นึงเข้าถึงได้
CompletableFuture<BigDecimal> getTokenAllowance(final String token, final String contractAddress);
การโอน Token ไปยัง Wallet Address ปลายทาง (Recipient)
CompletableFuture<TransactionReceipt> tokenTransfer(final String token, String recipient, final BigDecimal amount);
การ Approve จำนวน Token ให้ Smart Contract นึงสามารถเข้าถึงได้เท่าไหร่
CompletableFuture<TransactionReceipt> tokenApprove(final String token, final BigDecimal amount, final String contractAddress);
การแลกเปลี่ยน (Swap) Token จาก A -> B บน Router (DEX/AMM)
CompletableFuture<TransactionReceipt> tokenSwap(final String swapRouter, final String tokenA, final String tokenB, final BigDecimal amount, final double slippage, final int deadlineMinutes);
เติม Gas
CompletableFuture<TransactionReceipt> fillGas(final String token, final BigDecimal amount);
การแลกเปลี่ยน (Swap) Token จาก A -> Gas Token บน Router (DEX/AMM) แล้วเติม Gas (ซื้อแล้วเติม Gas)
CompletableFuture<TransactionReceipt> tokenSwapAndFillGas(final String swapRouter, final String token, final String gasToken, final BigDecimal amount);
เรียกเมื่อมี Block ใหม่เกิดขึ้น
void onBlock(final Consumer<EthBlock.Block> consumer);
ลองเอาไปประยุกต์ใช้ตามความต้องการตัวเองดูน่ะ
DeFi - Decentralized Finance
DEX - Decentralized Exchange
AMM - Automated Money Maker
ถ้าใครอยากให้การสนับสนุน หรือให้ค่ากาแฟ เล็ก ๆ น้อย ๆ สามารถสนับสนุนได้ที่
Code ชุดนี้ผมได้แรงบันดาลใจมาจาก GitHub Repository นี้ https://github.com/earthchie/DeFi-SDK
ขอขอบคุณคุณเอิร์ธ CEO DomeCloud ด้วยครับ ที่ทำให้ผมได้มีตัวอย่างเรียนรู้การเขียน Code เพื่อเชื่อมต่อกับ Smart Contract จนได้เขียน Code ชุดนี้ขึ้นมา ขอบคุณมาก ๆ ครับ