Tokens
騙局:無法換回代幣
最近我從 PancakeSwap 買了一個代幣。看起來像是被騙了——它是新的,只有買入操作,沒有賣出操作。而且我也不能換回來。
我正在提供它的契約原始碼,如果有人解釋為什麼它不能出售,我會很高興:
# # Panoramix v4 Oct 2019 # Decompiled source of bsc:0xEF45178482b5868668D4ae8f2556D4F23c4Ffe51 # # Let's make the world open source # def storage: owner is addr at storage 0 newOwner is addr at storage 1 symbol is array of uint256 at storage 2 name is array of uint256 at storage 3 decimals is uint8 at storage 4 stor5 is uint256 at storage 5 unknown1ee59f20Address is addr at storage 6 balanceOf is mapping of uint256 at storage 7 allowance is mapping of uint256 at storage 8 def name(): # not payable return name[0 len name.length] def unknown1ee59f20(): # not payable return unknown1ee59f20Address def decimals(): # not payable return decimals def balanceOf(address _owner): # not payable require calldata.size - 4 >= 32 return balanceOf[addr(_owner)] def owner(): # not payable return owner def symbol(): # not payable return symbol[0 len symbol.length] def newOwner(): # not payable return newOwner def allowance(address _owner, address _spender): # not payable require calldata.size - 4 >= 64 return allowance[addr(_owner)][addr(_spender)]
# # Regular functions # def _fallback() payable: # default function revert def totalSupply(): # not payable require balanceOf[0] <= stor5 return (stor5 - balanceOf[0]) def transferOwnership(address _newOwner): # not payable require calldata.size - 4 >= 32 require caller == owner newOwner = _newOwner def unknown81f4f399(addr _param1): # not payable require calldata.size - 4 >= 32 require caller == owner unknown1ee59f20Address = _param1 def acceptOwnership(): # not payable require caller == newOwner log OwnershipTransferred( address previousOwner=owner, address newOwner=newOwner) owner = newOwner newOwner = 0 def approve(address _spender, uint256 _value): # not payable require calldata.size - 4 >= 64 allowance[caller][addr(_spender)] = _value log Approval( address owner=_value, address spender=caller, uint256 value=_spender) return 1 def transfer(address _to, uint256 _value): # not payable require calldata.size - 4 >= 64 if unknown1ee59f20Address == _to: revert with 0, 'Please wait' require _value <= balanceOf[caller] balanceOf[caller] -= _value require _value + balanceOf[_to] >= balanceOf[_to] balanceOf[addr(_to)] = _value + balanceOf[_to] log Transfer( address from=_value, address to=caller, uint256 value=_to) return 1 def approveAndCall(address _spender, uint256 _amount, bytes _extraData): # not payable require calldata.size - 4 >= 96 require _extraData <= 4294967296 require _extraData + 36 <= calldata.size require _extraData.length <= 4294967296 and _extraData + _extraData.length + 36 <= calldata.size allowance[caller][addr(_spender)] = _amount mem[ceil32(_extraData.length) + 128] = _amount log Approval(address owner, address spender, uint256 value): Mask(8 * -ceil32(_extraData.length) + _extraData.length + 32, 0, 0), mem[_extraData.length + 160 len -_extraData.length + ceil32(_extraData.length)], caller, _spender, require ext_code.size(_spender) call _spender with: gas gas_remaining wei args caller, _amount, this.address, Array(len=_extraData.length, data=_extraData[all]) if not ext_call.success: revert with ext_call.return_data[0 len return_data.size] return 0, 1 def transferFrom(address _from, address _to, uint256 _value): # not payable require calldata.size - 4 >= 96 if not _from: if unknown1ee59f20Address == _to: revert with 0, 'Please wait' else: if unknown1ee59f20Address: if unknown1ee59f20Address == _to: revert with 0, 'Please wait' else: unknown1ee59f20Address = _to require _value <= balanceOf[addr(_from)] balanceOf[addr(_from)] -= _value require _value <= allowance[addr(_from)][caller] allowance[addr(_from)][caller] -= _value require _value + balanceOf[addr(_to)] >= balanceOf[addr(_to)] balanceOf[addr(_to)] += _value log Transfer( address from=_value, address to=_from, uint256 value=_to) return 1
我將不勝感激任何幫助將其換回並返還我的投資!
轉移中的這一行是禁止轉移:
def transfer(address _to, uint256 _value): # not payable ... if unknown1ee59f20Address == _to: revert with 0, 'Please wait'
如果你讀出
unknown1ee59f20Address
(儲存槽 6),它會顯示一個地址:682b9056b61a5087e2373a6ee6a7d3000752b46c
: PancakeSwap V2: BUSD-STXC ( https://bscscan.com/address/682b9056b61a5087e2373a6ee6a7d3000752b46c#code )所以合約主動禁止向pancake LP轉賬。
此地址可由所有者設置:
def unknown81f4f399(addr _param1): # not payable require calldata.size - 4 >= 32 require caller == owner unknown1ee59f20Address = _param1
從“請稍候”消息來看,此令牌很可能會在一段時間後啟用傳輸(或者它只是一塊地毯)。無論如何,我會遠離禁止以任何形式轉移的代幣。