Last active
November 4, 2021 10:29
-
-
Save zh/7d8f88290b568dcdc9fc9ae242d42cc6 to your computer and use it in GitHub Desktop.
open source woocommerce contract
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Panoramix v4 Oct 2019 | |
# Decompiled source of 0x3E0371bcb61283c036A48274AbDe0Ab3DA107a50 | |
# | |
# Let's make the world open source | |
# | |
def storage: | |
owner is addr at storage 0 | |
feeAccount1 is addr at storage 1 | |
feeAccount2 is addr at storage 2 | |
feeAccountToken is addr at storage 3 | |
seller is mapping of struct at storage 4 | |
balanceOfEthFee is uint256 at storage 5 | |
stor5 is uint256 at storage 5 offset 1 | |
feePercent is uint256 at storage 6 | |
maxFee is uint256 at storage 7 | |
def maxFee(): # not payable | |
return maxFee | |
def getSellerAddressPayment(address _sellerAddress, uint256 _orderId): # not payable | |
return seller[addr(_sellerAddress)][_orderId].field_256 | |
def getBuyerAddressPayment(address _sellerAddress, uint256 _orderId): # not payable | |
return seller[addr(_sellerAddress)][_orderId].field_0 | |
def getValuePayment(address _sellerAddress, uint256 _orderId): # not payable | |
return seller[addr(_sellerAddress)][_orderId].field_512 | |
def balanceOfEthFee(): # not payable | |
return balanceOfEthFee | |
def payment(address _param1, uint256 _param2): # not payable | |
return seller[_param1][_param2].field_0, | |
seller[_param1][_param2].field_256, | |
seller[_param1][_param2].field_512, | |
seller[_param1][_param2].field_768 | |
def feeAccount2(): # not payable | |
return feeAccount2 | |
def feePercent(): # not payable | |
return feePercent | |
def owner(): # not payable | |
return owner | |
def getCurrencyPayment(address _sellerAddress, uint256 _orderId): # not payable | |
return seller[addr(_sellerAddress)][_orderId].field_768 | |
def feeAccount1(): # not payable | |
return feeAccount1 | |
def feeAccountToken(): # not payable | |
return feeAccountToken | |
# | |
# Regular functions | |
# | |
def setFeeAccount1(address _feeAccount1): # not payable | |
require owner == caller | |
feeAccount1 = _feeAccount1 | |
def setFeeAccount2(address _feeAccount2): # not payable | |
require owner == caller | |
feeAccount2 = _feeAccount2 | |
def setFeeAccountToken(address _feeAccountToken): # not payable | |
require owner == caller | |
feeAccountToken = _feeAccountToken | |
def transferOwnership(address _newOwner): # not payable | |
require owner == caller | |
require _newOwner | |
owner = _newOwner | |
def setFeePercent(uint256 _feePercent): # not payable | |
require owner == caller | |
require _feePercent <= maxFee | |
feePercent = _feePercent | |
def balanceOfToken(address _tokenAddress, address _Address): # not payable | |
require ext_code.size(_tokenAddress) | |
call _tokenAddress.balanceOf(address owner) with: | |
gas gas_remaining wei | |
args _Address | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
require return_data.size >= 32 | |
return ext_call.return_data[0] | |
def transferFee(): # not payable | |
require owner == caller | |
call feeAccount1 with: | |
value stor5 wei | |
gas 2300 * is_zero(value) wei | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
require stor5 <= balanceOfEthFee | |
balanceOfEthFee -= stor5 | |
call feeAccount2 with: | |
value balanceOfEthFee - stor5 wei | |
gas 2300 * is_zero(value) wei | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
balanceOfEthFee = 0 | |
def payToken(address _tokenAddress, address _sellerAddress, uint256 _orderId, uint256 _value): # not payable | |
require _tokenAddress | |
require _sellerAddress | |
require _value > 0 | |
require ext_code.size(_tokenAddress) | |
call _tokenAddress.allowance(address owner, address spender) with: | |
gas gas_remaining wei | |
args caller, this.address | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
require return_data.size >= 32 | |
require ext_call.return_data >= _value | |
if not _value: | |
require ext_code.size(_tokenAddress) | |
call _tokenAddress.transferFrom(address from, address to, uint256 value) with: | |
gas gas_remaining wei | |
args caller, feeAccountToken, 0 | |
else: | |
require feePercent * _value / _value == feePercent | |
require ext_code.size(_tokenAddress) | |
call _tokenAddress.transferFrom(address from, address to, uint256 value) with: | |
gas gas_remaining wei | |
args caller, feeAccountToken, feePercent * _value / 100 * 10^6 | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
require return_data.size >= 32 | |
if not _value: | |
require 0 <= _value | |
require ext_code.size(_tokenAddress) | |
call _tokenAddress.transferFrom(address from, address to, uint256 value) with: | |
gas gas_remaining wei | |
args caller, addr(_sellerAddress), _value | |
else: | |
require feePercent * _value / _value == feePercent | |
require feePercent * _value / 100 * 10^6 <= _value | |
require ext_code.size(_tokenAddress) | |
call _tokenAddress.transferFrom(address from, address to, uint256 value) with: | |
gas gas_remaining wei | |
args caller, addr(_sellerAddress), _value - (feePercent * _value / 100 * 10^6) | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
require return_data.size >= 32 | |
seller[addr(_sellerAddress)][_orderId].field_0 = caller | |
seller[addr(_sellerAddress)][_orderId].field_256 = _sellerAddress | |
seller[addr(_sellerAddress)][_orderId].field_512 = _value | |
seller[addr(_sellerAddress)][_orderId].field_768 = _tokenAddress | |
return 1 | |
def _fallback() payable: # default function | |
require calldata.size == 20 | |
require call.value > 99999999999 | |
mem[96] = calldata.size | |
mem[128 len calldata.size] = call.data[0 len calldata.size] | |
idx = 20 | |
s = 1 | |
t = 0 | |
while idx > 0: | |
require idx - 1 < calldata.size | |
idx = idx - 1 | |
s = 256 * s | |
t = (mem[idx + 127 len 1] * s) + t | |
continue | |
if not call.value / 10^10: | |
require 0 <= call.value | |
require call.value + balanceOfEthFee >= balanceOfEthFee | |
balanceOfEthFee += call.value | |
revert | |
require 10^10 * call.value / 10^10 / call.value / 10^10 == 10^10 | |
require 10^10 * call.value / 10^10 <= call.value | |
require call.value - (10^10 * call.value / 10^10) + balanceOfEthFee >= balanceOfEthFee | |
balanceOfEthFee = call.value - (10^10 * call.value / 10^10) + balanceOfEthFee | |
require addr(99220 * Mask(8, 248, _5) >> 248) | |
require 10^10 * call.value / 10^10 > 0 | |
if not 10^10 * call.value / 10^10: | |
require 0 <= 10^10 * call.value / 10^10 | |
call addr(99220 * Mask(8, 248, _5) >> 248) with: | |
value 10^10 * call.value / 10^10 wei | |
gas 2300 * is_zero(value) wei | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
require balanceOfEthFee >= balanceOfEthFee | |
else: | |
require 10^10 * feePercent * call.value / 10^10 / 10^10 * call.value / 10^10 == feePercent | |
require 10^10 * feePercent * call.value / 10^10 / 100 * 10^6 <= 10^10 * call.value / 10^10 | |
call addr(99220 * Mask(8, 248, _5) >> 248) with: | |
value (10^10 * call.value / 10^10) - (10^10 * feePercent * call.value / 10^10 / 100 * 10^6) wei | |
gas 2300 * is_zero(value) wei | |
if not ext_call.success: | |
revert with ext_call.return_data[0 len return_data.size] | |
require (10^10 * feePercent * call.value / 10^10 / 100 * 10^6) + balanceOfEthFee >= balanceOfEthFee | |
balanceOfEthFee += 10^10 * feePercent * call.value / 10^10 / 100 * 10^6 | |
seller[addr(99220 * Mask(8, 248, _5) >> 248)][call.value - (10^10 * call.value / 10^10)].field_0 = caller | |
seller[addr(99220 * Mask(8, 248, _5) >> 248)][call.value - (10^10 * call.value / 10^10)].field_256 = addr(99220 * Mask(8, 248, _5) >> 248) | |
seller[addr(99220 * Mask(8, 248, _5) >> 248)][call.value - (10^10 * call.value / 10^10)].field_512 = 10^10 * call.value / 10^10 | |
seller[addr(99220 * Mask(8, 248, _5) >> 248)][call.value - (10^10 * call.value / 10^10)].field_768 = 1 | |
seller[addr(99220 * Mask(8, 248, _5) >> 248)][call.value - (10^10 * call.value / 10^10)].field_776 = 0 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment