Solidity
無法從合約中轉移 ERC20 代幣
假設 B 已在合約外呼叫並為 A
approve
設置了足夠的設置,我無法獲得一種可靠的合約方法來將 ERC20 代幣從地址 A 轉移到 B。合約內部的值列印得很好,但失敗了。我在如何設置所有權和簽名方面遺漏了一些東西。我確實有一個解決方法,可以在契約之外進行相同的工作,但我想在內部進行。allowance``allowance``transferFrom``transferFrom
我設置了一個帶有 truffle 測試的範例 repo 和一個 issue 以進一步描述該問題:
https://github.com/PulseBlockchain/oz-sample-app/issues/1
這是我遇到類似問題的大型項目的摘錄。
它看起來類似於這個問題,ERC20 批准和 transferFrom 從一個契約,除了我在
approve
外面做,並希望契約只是做transferFrom
。看起來有一種方法可以transfer
從像這個 Open ZeppelinCrowdSale
契約那樣的契約中做,並且我在我的項目中工作。我喜歡能夠根據自己的契約做任何事情,並且喜歡更好地理解圍繞它的所有權和簽名規則transfer
。transferFrom
得益於Gonçalo Sá的調試幫助,問題得以解決。這是修復送出 tl;dr:您必須首先到合約呼叫的地址,
approve
然後將值轉移到最終目標地址。allowance``tranferFrom
您可能正遭受批處理溢出錯誤的困擾。https://medium.com/@TokPie/erc20-tokens-under-attack-from-new-batchoverflow-bug-while-tokpie-remains-safe-b59dd716d469