兑换合约 = 交易所? / 学习智能合约#16

in STEEM CN/中文4 years ago

exchange.jpg

如果你已在自己的网站中发行了基于以太坊的代币,但是还没有上交易所,那么,你要如何与其他人交易你的代币呢?

以太币和代币之间的交易可以理解为一个兑换合约,其实质是ICO的思路! 你给他转以太币,他给你转代币,还不就是ICO合约嘛。嗯,赶紧把《ICO合约》翻出来整整。

改造好的代码如下:

pragma solidity >=0.4.22 <0.7.0;

interface TokenToExchange {
    function transfer(address _to, uint256 _value) external returns (bool success);
    function transferFromOrigin(address _to, uint256 _value) external returns (bool success);
}

contract Exchange {
    TokenToExchange token = TokenToExchange(0x991F313230940ab48f9Ea8B04084FA790B882b53);
    
    uint public price = 10000; //1eth=10000lark
    
    //给合约转以太币以换取代币
    receive() external 
        payable 
    { 
        token.transfer(msg.sender, msg.value * price);
    }
    
    fallback () external payable { }
    
    function larkToEth(uint _amount) 
        public
        payable
    {
        token.transferFromOrigin(address(this), _amount);
        msg.sender.transfer(_amount / price);
    }
    
    function getThis() 
        public
        view
        returns(address)
    {
        return address(this);
    }
    
}

代码还蛮简洁的,两个简单的函数就可以实现以太币和代币之间的兑换。 这确实是以太坊擅长的事情!

按这个思路进一步下去,只要设定好价格,以太币和任何代币都可以兑换,这不就是去中心化的交易所嘛!所以,基于以太坊,你开发个代币交易所还是很容易的,聪明睿智的你有把握到关键点么!

Coin Marketplace

STEEM 0.20
TRX 0.19
JST 0.034
BTC 91309.02
ETH 3119.19
USDT 1.00
SBD 2.91