mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
Added kyber connector.
This commit is contained in:
parent
45ffbaf670
commit
ded8a24145
97
contracts/connectors/kyber.sol
Normal file
97
contracts/connectors/kyber.sol
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
pragma solidity ^0.6.0;
|
||||||
|
|
||||||
|
// import files from common directory
|
||||||
|
import { TokenInterface , MemoryInterface, EventInterface} from "../common/interfaces.sol";
|
||||||
|
import { Stores } from "../common/stores.sol";
|
||||||
|
import { DSMath } from "../common/math.sol";
|
||||||
|
|
||||||
|
interface KyberInterface {
|
||||||
|
function trade(
|
||||||
|
address src,
|
||||||
|
uint srcAmount,
|
||||||
|
address dest,
|
||||||
|
address destAddress,
|
||||||
|
uint maxDestAmount,
|
||||||
|
uint minConversionRate,
|
||||||
|
address walletId
|
||||||
|
) external payable returns (uint);
|
||||||
|
|
||||||
|
function getExpectedRate(
|
||||||
|
address src,
|
||||||
|
address dest,
|
||||||
|
uint srcQty
|
||||||
|
) external view returns (uint, uint);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
contract KyberHelpers is DSMath, Stores {
|
||||||
|
/**
|
||||||
|
* @dev Get Kyber Proxy Address
|
||||||
|
*/
|
||||||
|
function getAddressKyber() public pure returns (address) {
|
||||||
|
return 0x818E6FECD516Ecc3849DAf6845e3EC868087B755;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Get Admin Address
|
||||||
|
*/
|
||||||
|
function getAddressAdmin() public pure returns (address) {
|
||||||
|
return 0x7284a8451d9a0e7Dc62B3a71C0593eA2eC5c5638;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
contract KyberResolver is KyberHelpers {
|
||||||
|
event LogSell(
|
||||||
|
address indexed buyToken,
|
||||||
|
address indexed sellToken,
|
||||||
|
uint256 buyAmt,
|
||||||
|
uint256 sellAmt,
|
||||||
|
uint256 getId,
|
||||||
|
uint256 setId
|
||||||
|
);
|
||||||
|
|
||||||
|
function sell(
|
||||||
|
address buyAddr,
|
||||||
|
address sellAddr,
|
||||||
|
uint sellAmt,
|
||||||
|
uint unitAmt,
|
||||||
|
uint getId,
|
||||||
|
uint setId
|
||||||
|
) external payable
|
||||||
|
{
|
||||||
|
uint _sellAmt = getUint(getId, sellAmt);
|
||||||
|
|
||||||
|
uint ethAmt;
|
||||||
|
if (sellAddr == getEthAddr()) {
|
||||||
|
_sellAmt = _sellAmt == uint(-1) ? address(this).balance : _sellAmt;
|
||||||
|
ethAmt = _sellAmt;
|
||||||
|
} else {
|
||||||
|
TokenInterface sellContract = TokenInterface(sellAddr);
|
||||||
|
_sellAmt = _sellAmt == uint(-1) ? sellContract.balanceOf(address(this)) : _sellAmt;
|
||||||
|
sellContract.approve(getAddressKyber(), _sellAmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint _buyAmt = KyberInterface(getAddressKyber()).trade.value(ethAmt)(
|
||||||
|
sellAddr,
|
||||||
|
_sellAmt,
|
||||||
|
buyAddr,
|
||||||
|
address(this),
|
||||||
|
uint(-1),
|
||||||
|
unitAmt,
|
||||||
|
getAddressAdmin()
|
||||||
|
);
|
||||||
|
|
||||||
|
setUint(setId, _buyAmt);
|
||||||
|
|
||||||
|
emit LogSell(buyAddr, sellAddr, _buyAmt, _sellAmt, getId, setId);
|
||||||
|
bytes32 eventCode = keccak256("LogSell(address,address,uint256,uint256,uint256,uint256)");
|
||||||
|
bytes memory eventData = abi.encode(buyAddr, sellAddr, _buyAmt, _sellAmt, getId, setId);
|
||||||
|
emitEvent(eventCode, eventData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
contract InstaKyber is KyberResolver {
|
||||||
|
string public name = "Kyber-v1";
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user