1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package main
- import (
- "log"
- "math/big"
- "sync-block/dgn"
- "sync-block/er"
- "time"
- _ "github.com/go-sql-driver/mysql"
- )
- func main() {
- log.SetFlags(log.LstdFlags | log.Lshortfile)
- ethclient, err := dgn.New("http://3.38.62.211:8545", nil)
- er.Check(err)
- pkey := "d81d044cbf69701d2f93807fee2979fd1028657e455a27a7fbb24206c89d2ca3"
- latestblock, err := ethclient.GetLastBlockNumber()
- log.Println("현재 블록", latestblock)
- er.Check(err)
- //당근토큰 주소
- tokenAddr := "0xA7B737851241eB0d8Fa79323e1250c84bCEcc20f"
- fromAddr := "0x87bac811E0792F33AB05d16814954C264CAAe82D"
- toAddr := "0x703FEA5E56cFaF5a30F73a0b663Fe936406485De"
- //toAddr := "0x30482875c734452dee589ce820d9cca59e537f01"
- //_, gasLimit, err := ethclient.GetEstimatedGasLimit(pkey, tokenAddr, "10000")
- //log.Println(gasLimit)
- //return
- balance, err := ethclient.GetBalance(fromAddr)
- er.Check(err)
- log.Println("현재 from 이더 발란스", balance)
- balance, err = ethclient.GetTokenBalance(tokenAddr, fromAddr)
- er.Check(err)
- log.Println("현재 from 토큰 발란스", balance)
- balance, err = ethclient.GetTokenBalance(tokenAddr, toAddr)
- er.Check(err)
- log.Println("현재 to 토큰 발란스", balance)
- //return
- // _, gasLimit, err := ethclient.GetEstimatedGasLimit(tokenAddr, pkey, toAddr, "10000")
- _, gasLimit, err := ethclient.GetEstimatedGasLimit(tokenAddr, pkey, toAddr, big.NewInt(10000))
- // er.Check(err)
- gasPrice, err := ethclient.GetSuggestedGasPrice()
- // er.Check(err)
- // log.Println(gasPrice, gasLimit)
- // return
- txHash, err := ethclient.TransferToken(tokenAddr, pkey, toAddr, big.NewInt(10000), gasPrice, gasLimit)
- log.Println(txHash, err)
- for {
- er.Check(err)
- tx, err := ethclient.GetTxByHash(txHash)
- er.Check(err)
- if tx.BlockNumber != "" {
- break
- }
- time.Sleep(time.Second)
- log.Println("wait...")
- }
- log.Println("토큰 전송 완료")
- balance, err = ethclient.GetTokenBalance(tokenAddr, fromAddr)
- er.Check(err)
- log.Println("현재 from 토큰 발란스", balance)
- balance, err = ethclient.GetTokenBalance(tokenAddr, toAddr)
- er.Check(err)
- log.Println("현재 to 토큰 발란스", balance)
- rct, err := ethclient.GetTxReceipt(txHash)
- er.Check(err)
- log.Println("tx status", rct.Status, rct.GasUsed, rct.CumulativeGasUsed)
- return
- }
|