Last active
September 16, 2024 15:54
-
-
Save kangchihlun/a53974ef2fbe23919705dfe8f1427aa5 to your computer and use it in GitHub Desktop.
usdt(erc20) transfer demo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Created by Chih.Lun.Kang | |
// 網路上找的範例大部分都不能用,後來嘗試數次只有這方法可行 | |
// 主網的appid => 539ab33xxxx,要去Infura申請,在上面建立一個project | |
// #### NOTE #### : 要特別注意本身轉帳的帳號要儲備足夠數量的 eth 跟 btc | |
// #### 注意 #### : 目前使用人工轉換儲值手續費,建議在幣價好的時候一次換匯才划算 | |
const USDTJSON = require('./build/contracts/USDT.json') | |
const Web3 = require('web3') | |
const Tx = require('ethereumjs-tx').Transaction | |
const rpcEndpoint = `https://mainnet.infura.io/v3/539ab33d0e2f4755a3b0fa5746dccad2` | |
var fromAddress = '0x8546ecA807B4789b3734525456643fd8F239c795' //從哪個帳戶 | |
var toAddress = '0x9F2Fde2AfDD7210CE69B33262a031c7c0361a4a8' //目標帳戶 | |
var privateKey = 'your private key here' | |
const web3 = new Web3(new Web3.providers.HttpProvider(rpcEndpoint)) | |
// USDT contract 連結 https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code | |
const ContractAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7'; | |
const USDT = new web3.eth.Contract(USDTJSON.abi, ContractAddress,{from: fromAddress}) | |
let amount = web3.utils.toHex('10000000'); // 10 dolor * 10^6 | |
async function main() { | |
web3.eth.getTransactionCount(fromAddress) | |
.then((count) => { | |
let rawTransaction = { | |
'from': fromAddress, | |
'gasPrice': web3.utils.toHex(20 * 1e9), | |
'gasLimit': web3.utils.toHex(210000), | |
'to': ContractAddress, | |
'value': 0x0, | |
'data': USDT.methods.transfer(toAddress, amount).encodeABI(), | |
'nonce': web3.utils.toHex(count) | |
} | |
let transaction = new Tx(rawTransaction) | |
transaction.sign(Buffer.from(privateKey, 'hex')) | |
web3.eth.sendSignedTransaction('0x' + transaction.serialize().toString('hex')) | |
.on('transactionHash', console.log) | |
}) | |
} | |
main().then(() => { | |
}).catch((e) => { | |
console.log("error", e); | |
}) |
@kangchihlun let amount = web3.utils.toHex(2710) what is amount in USDT please? Example I have 10 USDT what is amount of web3.utils.toHex(xxxx) please?
Sorry for the confusing, I have update the code to
web3.utils.toHex('10000000') should be correct if you want to transfer 10 usdt
@kangchihlun let amount = web3.utils.toHex(2710) what is amount in USDT please? Example I have 10 USDT what is amount of web3.utils.toHex(xxxx) please?
Sorry for the confusing, I have update the code to web3.utils.toHex('10000000') should be correct if you want to transfer 10 usdt
Thank you very much!
You get can directly get the ABI as json format here
thanks bro @kangchihlun
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@kangchihlun
let amount = web3.utils.toHex(2710) what is amount in USDT please?
Example I have 10 USDT what is amount of web3.utils.toHex(xxxx) please?