Web3js
直接針對合約地址執行交易批准(無 ABI)
已解決 現在,您將始終需要 ABI 來使用 web3 對乙太坊網路執行呼叫。一種簡單的方法是重構您希望執行的函式,或者創建一個單獨的合約來呼叫或使用此處的技巧並添加 ABI 或至少從您希望呼叫的合約中添加一部分。以防萬一,我使用了批准呼叫的通用 ABI。
await this.state.currentAddress.methods.approve("0x8b4a5682189361ce56702260051900f74d76e08b", amount).send({from: this.state.accounts[0]});
我有以下反應。這是我認為我可以執行該
approve
功能的方式,但它不起作用。我當然可以從 API 獲得契約 ABI,但我想避免這種情況。有沒有什麼方法可以通過web3直接通過合約地址呼叫標準ERC20代幣的Approve功能,而無需導入ABI?
您將需要 ABI。是合約實例的
.methods
一個屬性,你可以通過 ABI 獲得。如果您使用ethers.js,您可以使用簡寫 ABI 來實現相同的目標:
let abi = ["function approve(address _spender, uint256 _value) public returns (bool success)"] let provider = ethers.getDefaultProvider('ropsten') let contract = new ethers.Contract(tokenAddress, abi, provider) await contract.approve(accountAddress, amount)
注意:如果要傳入 a
from
,則必須使用 ethersopt
。