Web3js
如何使用 web3 從錢包 A 向錢包 B 匯款?
var myContract = web3.eth.contract(abi); var address = 合約地址; var contract_data = myContract.at(address); var 發件人 = '0xd3aaa525c087978133abb517593ea334f16abd1f'; var接收器='0xff2b56315dc5372b45dfa3773c4cfd64f70c8e9c'; //transfer是合約中將錢從錢包A轉移到B的函式 var getData = contract_data.transfer.getData(receiver,amount); web3.eth.sendTransaction({to:receiver, from:sender, data: getData});
資料來源:如何使用 sendTransaction 呼叫我的合約函式
當我跟踪餘額時,結果發現只從錢包 A 中扣除了汽油價格,沒有別的?但是當我使用元遮罩 UI 進行交易時,餘額會成功更新。我相信,我使用這個 api 的方式存在一些缺陷,如果有人能分享他們的經驗,那就太好了。
您需要以
value
Wei 形式傳遞給sendTransaction
方法:web3.sendTransaction({to:receiver, from:sender, value:web3.toWei("0.5", "ether")})
sender
應該解鎖帳戶才能成功。發送你需要呼叫的令牌
contract_data.transfer(receiver,amount{from:web3.eth.accounts[0]});
或其中的一些東西。你不需要使用
web3.eth.sendTransaction
//set web3 variable const web3 = new Web3(window.ethereum); //get all the accounts const accounts = await web3.eth.getAccounts(); //if you're using react this.setState({web3, accounts}); //send the tx using react this.state.web3.eth.sendTransaction({to: contractAddress, from: this.state.accounts[0], value: ETHamount});
或者如果你沒有使用 react
web3.eth.sendTransaction({to: address, from: address, value: inWei});
可以在這裡找到 wei 到 eth 的轉換。關於 web3 變數設置的資訊(它通常使用infura作為端點
$$ aka the provider $$) 可以在這裡找到。