Nodejs
Etherjs 轉賬 BNB 返回 0 且不結束於 Receiver 地址
嗨,我是智能合約的新手。我正在嘗試使用 etherjs 和 nextjs 編寫一個簡單的傳輸。基本上下面是我的程式碼
import {ethers} from 'ethers'; const ContractAddr = '0xB8c77482e45F1F44dE1745F52C74426C631bDD52'; /* BNB Contract address */ const ContractABI =[{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"}] const provider = new ethers.providers.Web3Provider(window.ethereum); const signer = provider.getSigner(); let numberOfTokens = ethers.utils.parseUnits('0.2', 18) const Contract = new ethers.Contract(ContractAddr,ContractABI,signer) const receiver = '0x8CA65A3Ce90d31a88FAa747c695183C2aefe537f'; Contract.transfer(receiver, numberOfTokens).then((transferResult) => { console.log(transferResult) alert("sent token") }).catch((error) => { console.error('error',error); });
在我的元遮罩上,它按我的意願彈出如下:
但是,當我在 BSCscan 測試網檢查交易詳情時,它顯示 0 值,並且接收方是合約地址而不是接收方。
https://testnet.bscscan.com/tx/0x3278d9668391eee98aadf83e8ae58a0b999f2e9c3e5f47a21f504e1c04b24814
幫助。在 Stackoverflow 上被困了一個星期,尋找類似問題的高低 :(
在您的具體情況下:
BNB 代幣合約僅存在於乙太坊主網上: https ://etherscan.io/address/0xb8c77482e45f1f44de1745f52c74426c631bdd52 。在其他網路上,這只是一個沒有任何契約的地址。
在 BSC 和 BSC 測試網上,BNB 是原生代幣(類似於乙太坊上的 ETH)。因此,如果您想在 BSC 上轉移 BNB,您將執行原生硬幣轉移。
一些一般背景:
您必須區分轉移原生代幣和轉移 ERC20 代幣。
當您轉移本地硬幣(例如 BSC 上的 BNB)時,您將發送一筆交易,其中
to
硬幣的接收者value
是應該發送的金額。data
在這種情況下不會有。當您發送 ERC20 代幣時,您將與代幣合約進行互動。通過這種互動,您可以告訴令牌要執行什麼操作。所以交易的目標是代幣合約,價值為 0(因為你沒有轉移原生幣)。您要執行的操作在
data
欄位中進行了編碼。