mirror of
https://github.com/grassrootseconomics/erc20-pool.git
synced 2026-05-24 15:46:16 +02:00
Enable choice in net fee, settable evm version
Signed-off-by: lash <dev@holbrook.no> Signed-off-by: Mohammed Sohail <sohailsameja@gmail.com>
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
SOLC = /usr/local/bin/solc
|
||||
EVM_VERSION = byzantium
|
||||
|
||||
all:
|
||||
$(SOLC) --bin SwapPool.sol --evm-version istanbul | awk 'NR>3' > SwapPool.bin
|
||||
$(SOLC) --abi SwapPool.sol --evm-version istanbul | awk 'NR>3' > SwapPool.json
|
||||
$(SOLC) --metadata SwapPool.sol --evm-version istanbul | awk 'NR>3' > SwapPool.metadata.json
|
||||
$(SOLC) --bin SwapPool.sol --evm-version $(EVM_VERSION)| awk 'NR>3' > SwapPool.bin
|
||||
$(SOLC) --abi SwapPool.sol --evm-version $(EVM_VERSION) | awk 'NR>3' > SwapPool.json
|
||||
$(SOLC) --metadata SwapPool.sol --evm-version $(EVM_VERSION) | awk 'NR>3' > SwapPool.metadata.json
|
||||
truncate -s -1 SwapPool.bin
|
||||
$(SOLC) --bin DecimalQuote.sol --evm-version istanbul | awk 'NR>3' > DecimalQuote.bin
|
||||
$(SOLC) --abi DecimalQuote.sol --evm-version istanbul | awk 'NR>3' > DecimalQuote.json
|
||||
$(SOLC) --metadata DecimalQuote.sol --evm-version istanbul | awk 'NR>3' > DecimalQuote.metadata.json
|
||||
$(SOLC) --bin DecimalQuote.sol --evm-version $(EVM_VERSION) | awk 'NR>3' > DecimalQuote.bin
|
||||
$(SOLC) --abi DecimalQuote.sol --evm-version $(EVM_VERSION) | awk 'NR>3' > DecimalQuote.json
|
||||
$(SOLC) --metadata DecimalQuote.sol --evm-version $(EVM_VERSION) | awk 'NR>3' > DecimalQuote.metadata.json
|
||||
truncate -s -1 DecimalQuote.bin
|
||||
|
||||
install: all
|
||||
|
||||
@@ -163,7 +163,7 @@ contract SwapPool {
|
||||
return quote;
|
||||
}
|
||||
|
||||
function withdraw(address _outToken, address _inToken, uint256 _value) public {
|
||||
function withdraw_less_fee(address _outToken, address _inToken, uint256 _value) public {
|
||||
bool r;
|
||||
bytes memory v;
|
||||
uint256 balance;
|
||||
@@ -197,6 +197,46 @@ contract SwapPool {
|
||||
emit Swap(msg.sender, _inToken, _outToken, _value, outValue, fee);
|
||||
}
|
||||
|
||||
function withdraw(address _outToken, address _inToken, uint256 _value) public {
|
||||
bool r;
|
||||
bytes memory v;
|
||||
uint256 netValue;
|
||||
uint256 outValue;
|
||||
uint256 balance;
|
||||
uint256 fee;
|
||||
|
||||
fee = getFee(_value);
|
||||
netValue = _value - fee;
|
||||
netValue = getQuote(_outToken, _inToken, netValue);
|
||||
|
||||
(r, v) = _outToken.call(abi.encodeWithSignature("balanceOf(address)", this));
|
||||
require(r, "ERR_TOKEN");
|
||||
balance = abi.decode(v, (uint256));
|
||||
outValue = netValue + fee;
|
||||
require(balance >= outValue, "ERR_BALANCE");
|
||||
|
||||
deposit(_inToken, _value);
|
||||
|
||||
(r, v) = _outToken.call(abi.encodeWithSignature('transfer(address,uint256)', msg.sender, netValue));
|
||||
require(r, "ERR_TOKEN");
|
||||
r = abi.decode(v, (bool));
|
||||
require(r, "ERR_TRANSFER");
|
||||
|
||||
if (feeAddress != address(0)) {
|
||||
fees[_outToken] += fee;
|
||||
}
|
||||
|
||||
emit Swap(msg.sender, _inToken, _outToken, _value, outValue, fee);
|
||||
}
|
||||
|
||||
function withdraw(address _outToken, address _inToken, uint256 _value, bool _deduct_fee) public {
|
||||
if (_deduct_fee) {
|
||||
withdraw_less_fee(_outToken, _inToken, _value);
|
||||
} else {
|
||||
withdraw(_outToken, _inToken, _value);
|
||||
}
|
||||
}
|
||||
|
||||
// Withdraw token to fee address
|
||||
function withdraw(address _outToken) public returns (uint256) {
|
||||
uint256 balance;
|
||||
|
||||
Reference in New Issue
Block a user